이 기사에서는 특정 참조 가치가 있는 PHP 디자인 패턴의 추상 팩토리를 소개합니다. 이제 모든 사람과 공유합니다. 필요한 친구들이 참조할 수 있습니다.
팩토리 메소드를 배우고 나서 제가 이해한 팩토리 메소드는 예를 들어 게임을 할 때 관우 영웅과 장비 영웅이 생성됩니다.
그러나 때때로 프로그램 설계 중에 객체 세트를 생성해야 할 수도 있으며, 이는 두 번째 생성 설계 패턴인
Abstract Factory Method(AbstractFactory)로 이어집니다. 예를 들어 관우를 만들 때 청룡연월검을 들고 빨간 토끼 말을 타고 있었습니다.
유비가 창조되었을 때 그는 수검과 암검을 모두 손에 쥐고 말을 탔습니다.
그러면 무기를 구현하려면 하나의 클래스가 필요하고, 말은 구현하려면 또 다른 클래스가 필요합니다.
캐릭터+무기+탈것이 조합이 됩니다.
마지막으로 추상적인 팩토리 패턴을 통해 조합 생성이 구현됩니다.
<?php /** Hero * 定义一个英雄接口 */ interface Hero { function CreateHero(); } /** GuanYu * 关羽英雄类 */ Class GuanYu implements Hero { function CreateHero() { echo "关羽加入战场-->"; } } /** LiuBei * 刘备英雄类 */ Class LiuBei implements Hero { function CreateHero() { echo "刘备加入战场-->"; } } /** Weapon * 定义一个兵器接口 */ interface Weapon { function CreateWeapon(); } /** GuanYuWeapon * 青龙偃月刀的类 */ Class GuanYuWeapon implements Weapon { function CreateWeapon() { echo "手持青龙偃月刀-->"; } } /** LiuBeiWeapon * 雌雄双剑的类 */ Class LiuBeiWeapon implements Weapon { function CreateWeapon() { echo "手持雌雄双剑-->"; } } /** Horse * 定义一个坐骑接口 */ interface Horse { function CreateHorse(); } /** ChiTu * 赤兔马类 */ Class ChiTu implements Horse { function CreateHorse() { echo "脚蹬赤兔马。"; } } /** DiLu * 的卢马类 */ Class DiLu implements Horse { function CreateHorse() { echo "脚蹬的卢马。"; } } /** AbstractFactory * 抽象工厂接口 为子类建立标准 * LoadingHero 加载人物类方法 * LoadingWeapon 加载武器类方法 * LoadingHorse 加载坐骑类方法 */ interface AbstractFactory { function LoadingHero(); function LoadingWeapon(); function LoadingHorse(); } /** GFactory * 关羽英雄创建工厂类 用于客户端调用 */ Class GFactory implements AbstractFactory { function LoadingHero() { return new GuanYu(); } function LoadingWeapon() { return new GuanYuWeapon(); } function LoadingHorse() { return new ChiTu(); } } /** LFactory * 刘备英雄创建工厂类 用于客户端调用 */ Class LFactory implements AbstractFactory { function LoadingHero() { return new LiuBei(); } function LoadingWeapon() { return new LiuBeiWeapon(); } function LoadingHorse() { return new DiLu(); } }
<?php // 抽象工厂模式 index.php header("Content-Type:text/html;charset=utf-8"); require_once "AbstractFactory.php"; echo "-----------------创建第一个英雄-----------------<br/>"; $GY = new GFactory(); // 调用第一个英雄的工厂 // 加载各自的创建方法 $GYHero = $GY->LoadingHero(); $GYWeapon = $GY->LoadingWeapon(); $GYHorse = $GY->LoadingHorse(); // 生成加入战场 $GYHero->CreateHero(); $GYWeapon->CreateWeapon(); $GYHorse->CreateHorse(); echo "<br/>"; echo "-----------------创建第二个英雄-----------------<br/>"; $LB = new LFactory(); // 调用第一个英雄的工厂 // 加载各自的创建方法 $LBHero = $LB->LoadingHero(); $LBWeapon = $LB->LoadingWeapon(); $LBHorse = $LB->LoadingHorse(); // 生成加入战场 $LBHero->CreateHero(); $LBWeapon->CreateWeapon(); $LBHorse->CreateHorse();
출력 결과:
------첫 번째 영웅 생성--------- -- -------
관우가 전장에 합류합니다 --> 청룡 연월검을 들고 -->
------두 번째 영웅 만들기------
유비가 전장에 합류합니다- - >수컷과 암컷 검을 모두 들고 -->페달을 밟는 루마.
관련 추천:
PHP 디자인 패턴 팩토리 메소드
위 내용은 PHP 디자인 패턴 추상 공장의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!