Heim  >  Artikel  >  Backend-Entwicklung  >  Abstrakte Fabrik für PHP-Entwurfsmuster

Abstrakte Fabrik für PHP-Entwurfsmuster

不言
不言Original
2018-04-18 11:39:371749Durchsuche

Dieser Artikel stellt die abstrakte Fabrik des PHP-Designmusters vor, die einen gewissen Referenzwert hat. Jetzt kann ich sie mit allen teilen, die sie brauchen.

Nachher Beim Erlernen der Factory-Methode besteht die Factory-Methode, die ich kenne, im Wesentlichen darin, ein Objekt zu erstellen.
Als ich beispielsweise ein Spiel spielte, habe ich einen Guan Yu-Helden und einen Zhang Fei-Helden erstellt.

Aber manchmal müssen Sie beim Entwerfen eines Programms möglicherweise eine Gruppe von Objekten erstellen. Dies führt zum zweiten kreativen Entwurfsmuster – AbstractFactory .
Als ich beispielsweise Guan Yu erschuf, hielt ich das Qinglong Yanyue-Schwert in der Hand und ritt auf einem roten Kaninchenpferd.
Als Liu Bei erschaffen wurde, hielt er sowohl männliche als auch weibliche Schwerter in seinen Händen und ritt auf einem Pferd.
Dann benötigen ihre Waffen eine Klasse zur Implementierung und das Pferd benötigt eine andere Klasse zur Implementierung.
Charakter + Waffe + Reittier werden zu einer Kombination.

Abschließend wird die Kombinationserstellung durch ein abstraktes Fabrikmuster realisiert.

Der Aufnahmecode lautet wie folgt:

<?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();

Das Ausgabeergebnis:

------ --- --------Erstelle den ersten Helden---
Guan Yu betritt das Schlachtfeld--> mit dem Qinglong Yanyue-Schwert - -> Treten Sie auf das rote Hasenpferd.
-----------------Erstelle einen zweiten Helden-----------------
Liu Bei betritt das Schlachtfeld –> mit Luma auf seinen Füßen.

Verwandte Empfehlungen:

Fabrikmethode des PHP-Entwurfsmusters

Einfache Fabrik des PHP-Entwurfsmusters



Das obige ist der detaillierte Inhalt vonAbstrakte Fabrik für PHP-Entwurfsmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn