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
相关推荐
WeiXin_DZbishe3 小时前
基于springboot装修风格选择系统的设计与开发-计算机毕设【课程设计】77964
java·vue.js·spring boot·后端·python·php·课程设计
高晶4 小时前
2A3 单端甲类功放从零制作全攻略:电路设计、焊接调试到煲机维护一站式指南
前端·设计模式
anew___5 小时前
《从零手写操作系统 (49):虚拟内存进阶——Demand Paging、Swap与缺页异常处理》
linux·服务器·php
misty youth6 小时前
Navicat与PHPstudy小皮
mysql·adb·php·navicat
代钦塔拉7 小时前
【C++/Qt 进阶】设计模式系列(4):原型模式——用“克隆“代替“重新构造“
c++·qt·设计模式
博风9 小时前
11、设计模式应用举例:迭代器模式:使用多个集合存储对象
设计模式·迭代器模式
I肆逸I9 小时前
OpenStack 管理:从认证、计算到存储与网络
网络·php·openstack
寻林写彡9 小时前
Web 安全三大漏洞靶场作业全整理:PHP 核心函数与防御方案汇总
安全·php
sejinan11 小时前
新版!IPTV直播源列表 V1.7 正式发布:接口大厅与会员定制生态解读
开发语言·php
白帽攻防录20 小时前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全