前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >PHP面向对象的设计模式-工厂模式(三)

PHP面向对象的设计模式-工厂模式(三)

原创
作者头像
堕落飞鸟
发布2023-04-28 15:57:33
发布2023-04-28 15:57:33
31200
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

抽象工厂模式

抽象工厂模式是一种更为高级的工厂模式,它可以创建多种不同类型的对象。抽象工厂模式通常由三个组件组成:抽象工厂,具体工厂和产品族。

抽象工厂

抽象工厂是一个接口或抽象类,它定义了创建产品族所需的方法。抽象工厂可以定义为接口或抽象类,具体取决于您的需求。下面是一个示例:

代码语言:javascript
代码运行次数:0
复制
interface AbstractFactoryInterface {
    public function createProductA();
    public function createProductB();
}

在上面的代码中,我们定义了一个名为AbstractFactoryInterface的接口,它有两个方法:createProductA和createProductB。这些方法将用于创建产品族。

具体工厂

具体工厂是实现抽象工厂接口或继承抽象类的类。每个具体工厂都必须实现在抽象工厂中定义的所有方法。下面是一个示例:

代码语言:javascript
代码运行次数:0
复制
class ConcreteFactory1 implements AbstractFactoryInterface {
    public function createProductA() {
        return new ProductA1();
    }

    public function createProductB() {
        return new ProductB1();
    }
}

class ConcreteFactory2 implements AbstractFactoryInterface {
    public function createProductA() {
        return new ProductA2();
    }

    public function createProductB() {
        return new ProductB2();
    }
}

在上面的代码中,我们定义了两个具体工厂:ConcreteFactory1和ConcreteFactory2。它们都实现了抽象工厂接口,并且实现了接口中定义的所有方法。ConcreteFactory1将创建ProductA1和ProductB1的实例,而ConcreteFactory2将创建ProductA2和ProductB2的实例。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 抽象工厂模式
    • 抽象工厂
    • 具体工厂
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档