如果要在简单工厂模式上在加方法就需要修改工厂方法
这不符合面向对象的设计原则:开闭原则 (对类新增是开放的,对类的修改是关闭的)有没方法呢?
抽象工厂模式
class Mysql{} interface Factory{ public static function getDB(); } //mysql 抽象工厂 class MysqlFactory implements factroy{ public static function getDB(){ return new Mysql(); } } class SqliteFactory implements factroy{ public static function getDB(){ return new Sqlite(); } } //调用 $fact ='MysqlFactory'; $db =MysqlFactory::getDB(); print_r($db);
变化 if else不见了 原来一个管所有的现在每一种产品都有一种工厂 抽象工厂