设计模式二十三式 第二式 工厂方法模式

工厂方法模式

官方介绍

工厂模式数据创建型模式
工厂模式在创建对象时不会对客户端暴露创建逻辑,并且是通过使用共同的接口指向新创建的对象
工厂方法模式因为只围绕一类接口来进行对象的创建与使用,使用场景更简单和单一,在实际的项目中使用频率反而比抽象工厂模式更高。

UML类图

implements implements implements extend extend KungFuInterface WuDang GaiBang WuLininterface WuLinAbstractFactory WuDangFactory GaiBangFactory

实现操作

interface KungFu
{
    // 出招
    public function Move();
}

class WuDang implements KungFu {
    public function move()
    {
        echo '使用太极拳';
    }
}

interface WuLin
{
    // 派出
    public function dispatch();
}

abstract class WuLinFactory implements WuLin
{
	// 提供进攻的方法
    public abstract function attack();

    public function dispatch()
    {
        return $this->attack();
    }
}

class WuDangFactory extends WuLinFactory
{
    public function attack(): WuDang
    {
        return new WuDang();
    }
}
// 使用方式
$wuDangFactory = new WuDangFactory();

$wuDangFactory->attack()->move();

工厂模式的职责

  1. 封装对象创建的过程,提升创建对象方法的可复用性。
  2. 将使用与创建实现分离,工厂只负责创建的逻辑。
  3. 尽可能封装创建对象过程中所遇见的所有可能变化。

优势

1. 为了把对象的创建和使用过程分开,降低代码耦合性。
2. 减少重复的代码。
3. 统一管理创建对象的不同实现逻辑。
上一篇:【Spring-MVC】


下一篇:Delphi 系统[27]关键字和保留字 implements