ホームページ >バックエンド開発 >PHPチュートリアル >PHP デザイン パターン - 抽象ファクトリー
免責事項: この一連のブログの参考資料は、Cheng Jie 著の「Dahua Design Pattern」です。
我们 先ほど簡単なファクトリーとファクトリーメソッドの設計モデルを紹介しましたが、今日は最後のファクトリー?? を学びます。
案
案
案
<?php/** * Created by PhpStorm. * User: LYL * Date: 2015/4/19 * Time: 17:39 *///-----------------------产品------------------------/**抽象产品角色 充饥食物 * Interface IAllayFood */interface IAllayFood{ function Allay();}/**抽象产品角色 解渴食物 * Interface IDrinkFood */interface IDrinkFood{ function Drink();}/**具体产品角色 虾仁汉堡 * Class XiaRenHamb */class XiaRenHamb implements IAllayFood{ function Allay() { echo "虾仁汉堡充饥了。。。。。。。<br/>"; }}/**具体产品角色 鸡肉汉堡 * Class ChickenHamb */class ChickenHamb implements IAllayFood{ function Allay() { echo "鸡肉汉堡充饥了。。。。。。。<br/>"; }}/**具体产品角色 可口可乐 * Class KekouKele */class KekouKele implements IDrinkFood{ function Drink() { echo "可口可乐解渴了。。。。。。。。。<br/>"; }}/**具体产品角色 百事可乐 * Class BaishiKele */class BaishiKele implements IDrinkFood{ function Drink() { echo "百事可乐解渴了。。。。。。。。<br/>"; }}//-------------------抽象工厂---------------------/**顶层超级抽象工厂接口 * Interface IFactory */interface IFactory{ //得到充饥食物 function GetAllayFood(); //得到解渴食物 function GetDrinkFood();}/**工厂A A套餐:虾仁汉堡+百事可乐 * Class IAFactory */class AFactory implements IFactory{ function GetAllayFood() { return new XiaRenHamb(); } function GetDrinkFood() { return new BaishiKele(); }}/**工厂B B套餐:鸡肉汉堡+可口可乐 * Class IBFactory */class BFactory implements IFactory{ function GetAllayFood() { return new ChickenHamb(); } function GetDrinkFood() { return new KekouKele(); }}クライアント テスト コード
Re r
header("Content-Type:text/html;charset=utf-8");//------------------------抽象工厂测试代码------------------require_once "./AbstractFactory/AbstractFactory.php";//------------------点套餐-------------$factoryA=new AFactory();$factoryB=new BFactory();//------------------麦当劳制作套餐食物------------//A套餐$allayA=$factoryA->GetAllayFood();$drinkA=$factoryA->GetDrinkFood();//B套餐$allayB=$factoryB->GetAllayFood();$drinkB=$factoryB->GetDrinkFood();//-------------------享受套餐---------------echo "享受A套餐:<br/>";$allayA->Allay();$drinkA->Drink();echo "享受B套餐:<br/>";$allayB->Allay();$drinkB->Drink();
該当するシナリオ:
1. 道路 (インターフェース)、家、パイプなど、ゲーム開発におけるマルチスタイルの一連のシーン (パッケージ)。
3. 作成する必要があるオブジェクトが、相互関連または相互依存する一連の製品ファミリーである場合、抽象ファクトリー パターンを使用できます。
3 つのファクトリー パターンの概要:
1. 3 つのタイプは形式と特性が非常に似ており、最終的な目標は分離です。オブジェクト作成プロセスをカプセル化して、クライアントがオブジェクトの作成方法を気にせずにオブジェクトを直接取得できるようにします。
2. 比較
ファクトリ メソッド パターン: 複雑なオブジェクトの作成に使用されます。 (a la carte food)は、抽象的な工場パターン:関連するまたは相互依存する複雑なオブジェクトのセットを作成するために使用されます。 (パッケージを購入する)
ファクトリメソッド作成では、通常、プロダクトを作成するメソッドは 1 つだけです。抽象ファクトリーには通常、一連の製品を作成するための複数の方法があります。