PHP设计模式系列(四):工厂方法模式

来源:互联网 发布:广东省教育网络平台 编辑:程序博客网 时间:2024/05/17 02:29

工厂方法模式

工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

模式结构

工厂方法模式包含如下角色:

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

结构图

这里写图片描述

PHP代码实现

<?php//抽象产品abstract class Operation{    private $numA,$numB;    public function __set($name,$value){        $this->$name=$value;    }    public function __get($name){        return $this->$name;    }    abstract public function getResult();}//具体产品class OperateAdd extends Operation{    public function getResult(){        $result=$this->numA+$this->numB;        return $result;    }}class OperateSub extends Operation{    public function getResult(){        $result=$this->numA-$this->numB;        return $result;    }}//抽象工厂interface Factory{    public function createOperation();}//具体工厂class AddFactory implements Factory{    public function createOperation()    {        return new OperateAdd();    }}class SubFactory implements Factory{    public function createOperation()    {        return new OperateSub();    }}$a=new AddFactory();$b=$a->createOperation();$b->numA=1;$b->numB=5;$c=$b->getResult();var_dump($c);

运行结果

int 6
0 0