设计模式 - 工厂方法模式

it2022-05-09  34

简介

模式定义

在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象。工厂方法模式让类的实例化延迟到子类中。

模式特点

工厂方法模式包含四个角色:

Product:抽象产品ConcreteProduct:具体产品Factory:抽象工厂ConcreteFactory:具体工厂

优缺点

克服了简单工厂的缺点,符合开放封闭原则。添加新产品时只需要添加具体的工厂类,而不需修改抽象工厂添加新对象时,需要同时增加对象类和工厂类用法复杂,抽象工厂在实现时可能需要使用反射技术

实例化的类可能会新增类型时,通常使用工厂模式作为创建对象的标准方式。

PHP 代码示例

<?php abstract class AbstractButtonFactory { abstract public function getInstance(); } class CircleButtonFactory extends AbstractButtonFactory { public function getInstance() { return new CircleButton(); } } class RectButtonFactory extends AbstractButtonFactory { public function getInstance() { return new RectButton(); } } abstract class AbstractButton { abstract public function click(); } class CircleButton extends AbstractButton { public function click() { echo "I'm circle button"; } } class RectButton extends AbstractButton { public function click() { echo "I'm rectangle button"; } } $cbf = new CircleButtonFactory(); $circleButton = $cbf->getInstance(); $circleButton->click();

转载于:https://www.cnblogs.com/kika/p/10851576.html


最新回复(0)