特徴:作成者と発信者を分離するには、呼び出し側は、オブジェクトを呼び出すファクトリクラスへの直接アクセスを要求コードの結合を低減、システムの維持・拡大を向上させます。
<?PHP // **** //共通インターフェイス**** インタフェースDB { 関数CONN(); } インタフェースFactoryの{ 機能CREATEDBを(); } // **** **** //サーバ側開発 クラス dbMysql 実装DB { 公共の 機能コネティカット(){ エコー mysqlデータベースの「接続!' ; } } クラス mysqlFactoryを実装工場{ パブリック 関数CREATEDB(){ 戻り 新しい新しいdbMysqlを(); } } クラス dbSqlite 実装DB { 公共の 機能コネティカット(){ エコーに接続されている「SQLiteデータベース!' ; } } クラス sqliteFactoryを実装工場{ パブリック 関数CREATEDB(){ 戻り 新しい新)(dbSqliteを; } } // これは、後で追加のOracleデータベースの開発である; //上記の元のコードを変更せず; //この手順であります開閉原理:オープン増加、修正のため閉鎖しました。 クラス dbOracleはある実装DB { 公共の 機能コネティカット(){ エコー Oracleデータベースの「接続!"; } } クラス oracleFactoryが実装工場{ パブリック 関数CREATEDB(){ 戻り 新しい)(dbOracleします。 } } // ****客户端调用**** // $工場 = 新しいmysqlFactory(); $デシベル = $工場 - > createdbの(); $ DB - > CONN(); エコー '<BR>' ; $工場 = 新しいsqliteFactory(); $デシベル = $工場 - > createdbの(); $デシベル - >CONN(); エコー '<BR>' ; //は、これは、後に追加のOracleデータベース接続の開発である $工場の = 新しい新; oracleFactory() $デシベル = $工場の - > createdbの(); $ DB - > CONN();