特点 :将调用者和创建者分离,调用者直接向工厂类请求获取调用对象,减少代码耦合,提高系统的维护性和扩展性。
<?php // **** 共同接口 **** // interface DB { function conn(); } interface factory { function createDB(); } // **** 服务端开发 **** // class dbMysql implements DB { public function conn() { echo '连接上了 mysql 数据库!'; } } class mysqlFactory implements factory { public function createDB() { return new dbMysql(); } } class dbSqlite implements DB { public function conn() { echo '连接上了 sqlite 数据库!'; } } class sqliteFactory implements factory { public function createDB() { return new dbSqlite(); } } // 这是开发中后来增加的 oracle 数据库; // 不需要修改上面原来的代码; // 这就是程序的开闭原则:修改关闭,增加开放。 class dbOracle implements DB { public function conn() { echo '连接上了 oracle 数据库!'; } } class oracleFactory implements factory { public function createDB() { return new dbOracle(); } } // **** 客户端调用 **** // $factory = new mysqlFactory(); $db = $factory->createDB(); $db->conn(); echo '<br>'; $factory = new sqliteFactory(); $db = $factory->createDB(); $db->conn(); echo '<br>'; // 这是开发中后来增加的 oracle 数据库连接 $factory = new oracleFactory(); $db = $factory->createDB(); $db->conn();