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
相关推荐
YGGP37 分钟前
【创造型模式】抽象工厂方法模式
设计模式
YGGP42 分钟前
【创造型模式】工厂方法模式
设计模式
Livan.Tang1 小时前
C++ 设计模式
开发语言·c++·设计模式
农民也会写代码3 小时前
织梦dedecms登录后台出现Safe Alert Request Error step 2
php·cms·dedecms·php二开
斯普信专业组12 小时前
IP隧道技术中数据包头部的变化分析:必然增加的封装机制
网络·tcp/ip·php
一伦明悦დ16 小时前
嵌入式系统C语言编程常用设计模式---参数表驱动设计
c语言·开发语言·单片机·设计模式
叫我黎大侠17 小时前
使用 LibreOffice 实现各种文档格式转换(支持任何开发语言调用 和 Linux + Windows 环境)[全网首发,保姆级教程,建议收藏]
java·大数据·linux·开发语言·python·c#·php
一米阳光zw18 小时前
mac将自己网络暴露到公网
网络·macos·php
qqxhb1 天前
零基础设计模式——第二部分:创建型模式 - 原型模式
设计模式·原型模式·浅拷贝·深拷贝
shark-chili1 天前
高效缓存设计的哲学
设计模式·接口·编程语言·抽象类