工厂模式在多态性设计中非常重要,如果应用得当,可以使得应用程序的移植性更好,类之间的依赖更松散,从而提高灵活性。如果说单例模式被为类的职责的话,那么工厂模式就是类的多态性。
那么什么是工厂类呢?
概念:工厂类是指包含了一个专门用来创建其它对象的方法的类。
应用场景:工厂模式通常用来返回符合类似接口的不同的类。也就是说,工厂类可以允许我们根据配置或应用程序的逻辑来决定要实例化哪一个类。
下面是一个简单的工厂类代码:
interface IDatabase { //...public function query($sql);}class DBFactory { public static function create($type){ $db = null; switch ($type) { case 'mysql': $db = new Mysql(/**arguments*/); break; case 'sqlite': $db = new Sqlite(/**arguments*/); break; case 'pgsql': $db = new PGsql(/**arguments*/); break; default: # code... break; } return $db; }}class Mysql implements IDatabase { //... public function query($sql){ }}/**other class ...*/