Home > Backend Development > PHP Tutorial > PHP design pattern abstract factory

PHP design pattern abstract factory

不言
Release: 2023-03-24 09:52:02
Original
1806 people have browsed it

This article introduces the abstract factory of PHP design pattern, which has certain reference value. Now I share it with you. Friends in need can refer to it

After learning the factory method, the factory method I know is basically to create an object.
For example, when playing a game, I created a Guan Yu hero and a Zhang Fei hero.

But sometimes you may need to create a group of objects during programming, and this leads to the second creational design pattern-- Abstract Factory Method (AbstractFactory).
For example, when I created Guan Yu, I was holding the Qinglong Yanyue Sword and riding a red rabbit horse.
When Liu Bei was created, he held both male and female swords in his hands and rode a horse.
Then their weapons need one class to implement, and the horse needs another class to implement.
Characters, weapons and mounts become a combination.

Finally, the combination creation is achieved through an abstract factory pattern.

The recording code is as follows:

<?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();  
    }     
}
Copy after login
<?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();
Copy after login

The output result:

-------------- ---Create the first hero-----------------
Guan Yu joins the battlefield--> Holding the Qinglong Yanyue Sword--> Pedal Red rabbit horse.
-----------------Create a second hero-----------------
Liu Bei joins the battlefield--> holding both male and female swords--> Luma on foot.

Related recommendations:

PHP Design Pattern Factory Method

PHP Design Pattern Simple Factory



The above is the detailed content of PHP design pattern abstract factory. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template