23种设计模式-工厂模式


23种设计模式-工厂模式

概述

工厂模式属于创建型模式,它定义一个用于创建对象的接口,让子类决定实例化哪个产品类的对象。工厂方法使一个产品类的实例化延迟到其工厂的子类

结构

工厂模式的主要角色:

  • 抽象工厂 AbstractFactory :提供了创建产品的接口,调用者通过它访问具体的工厂方法来创建产品
  • 具体工厂 ConcreteFactory :主要是实现抽象工厂中的抽象方法,完成具体产品的创建
  • 抽象产品 Product :定义了产品的规范,描述了产品的主要特性和功能
  • 具体产品 ConcreteProduct :实现了抽象产品角色定义的接口,由具体工厂来创建,它同具体工厂之间一一对应

代码实现

/**
 * 手机厂商接口
 * 抽象工厂
 */
interface MobileFactory
{
    // 生产产品接口
    public function produce();
}

/**
 * 手机产品接口
 * 抽象产品
 */
interface Mobile
{
    public function getName();
}

/**
 * 红米K70
 * 具体产品
 */
class RedmiK70 implements Mobile
{
    public function getName()
    {
        return '红米K70';
    }
}

/**
 * 华为Nova12
 * 具体产品
 */
class HuaweiNova12 implements Mobile
{

    public function getName()
    {
        return '华为Nova12';
    }
}

/**
 * 华为手机厂商
 * 具体工厂
 */
class Huawei implements MobileFactory
{

    public function produce()
    {
        return new HuaweiNova12();
    }
}

/**
 * 红米手机厂商
 * 具体工厂
 */
class Redmi implements MobileFactory
{

    public function produce()
    {
        return new RedmiK70();
    }
}

/**
 * 测试工厂
 */
class Shop
{
    public function __construct(private MobileFactory $factory)
    {
    }

    public function orderMobile()
    {
        $mobile = $this->factory->produce();
        echo $mobile->getName();
    }
}

// 实际调用
$shop = new Shop(new Huawei());
$shop->orderMobile();

文章作者: 我若为侠
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 我若为侠 !
 上一篇
23种设计模式-抽象工厂模式 23种设计模式-抽象工厂模式
23种设计模式-抽象工厂模式概述抽象工厂模式是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级产品的模式结构。 产品族可以理解为,笔记本电脑,台式电脑都是电脑,所以他们算的上一个
下一篇 
23种设计模式-单例模式 23种设计模式-单例模式
23种设计模式-单例模式概述单例模式是最简单的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一对象的方
  目录