特色 :將調用者和建立者分離,調用者直接向工廠類請求獲取調用對象,減小代碼耦合,提升系統的維護性和擴展性。php
<?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();