php 抽象工厂模式

1,抽象工厂(Abstract Factory)模式,是创建设计模式的一种,它创建一系列相关的对象,而不必指定具体的类。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系列的产品族创建一个具体的工厂类。

主要角色:

抽象工厂(Abstract Factory)角色:它声明创建抽象产品对象的接口

具体工厂(Concrete Factory)角色:实现创建产品对象的操作

抽象产品(Abstract Product)角色:声明一类产品的接口

具体产品(Concrete Product)角色:实现抽象产品角色所定义的接口

2,例子

php 复制代码
//抽象A产品
interface ProductA
{
    public function show();
}

class RedA implements ProductA
{
    public function show()
    {
        echo '商品:RedA';
    }
}

class BlueA implements ProductA
{
    public function show()
    {
        echo '商品:BlueA';
    }
}

//抽象B产品
interface ProductB
{
    public function show();
}

class RedB implements ProductB
{
    public function show()
    {
        echo '商品:RedB';
    }
}

class BlueB implements ProductB
{
    public function show()
    {
        echo '商品:BlueB';
    }
}

//抽象工厂
interface Abstractfactory
{
    public function createA(): ProductA;

    public function createB(): ProductB;
}

//具体工厂Red
class Redfactory
{
    public function createA():ProductA
    {
        return new RedA();
    }
    public function createB():ProductB
    {
        return new RedB();
    }
}
//具体工厂Blue
class Bluefactory
{
    public function createA()
    {
        return new BlueA();
    }
    public function createB()
    {
        return new BlueB();
    }
}
$p=new Redfactory();
$p->createA()->show();//商品:RedA
相关推荐
幂简集成explinks13 小时前
e签宝签署API更新实战:新增 signType 与 FDA 合规参数配置
后端·设计模式·开源
Bruce12316 小时前
web专题之php代审(二)
php
BingoGo17 小时前
PHP-FPM 深度调优指南 告别 502 错误,让你的 PHP 应用飞起来
后端·php
大飞pkz17 小时前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
努力也学不会java17 小时前
【设计模式】抽象工厂模式
java·设计模式·oracle·抽象工厂模式
LoveXming17 小时前
Chapter5—抽象工厂模式
抽象工厂模式
青草地溪水旁17 小时前
设计模式(C++)详解—抽象工厂模式 (Abstract Factory)(2)
c++·设计模式·抽象工厂模式
青草地溪水旁17 小时前
设计模式(C++)详解—抽象工厂模式 (Abstract Factory)(1)
c++·设计模式·抽象工厂模式
亿坊电商1 天前
物联网领域中PHP框架的最佳选择有哪些?
物联网·struts·php
Magnetic_h1 天前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa