php设计模式之工厂方法模式
工厂方法模式
工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
模式结构
工厂方法模式包含如下角色:
- Product:抽象产品
- ConcreteProduct:具体产品
- Factory:抽象工厂
- ConcreteFactory:具体工厂
结构图
PHP代码实现
1 $name=$value; 8 } 9 10 public function __get($name){11 return $this->$name;12 }13 abstract public function getResult();14 }15 16 //具体产品17 class OperateAdd extends Operation18 {19 public function getResult(){20 $result=$this->numA+$this->numB;21 return $result;22 }23 }24 class OperateSub extends Operation25 {26 public function getResult(){27 $result=$this->numA-$this->numB;28 return $result;29 }30 }31 32 //抽象工厂33 interface Factory34 {35 public function createOperation();36 }37 38 //具体工厂39 class AddFactory implements Factory40 {41 public function createOperation()42 {43 return new OperateAdd();44 }45 }46 class SubFactory implements Factory47 {48 public function createOperation()49 {50 return new OperateSub();51 }52 }53 $a=new AddFactory();54 $b=$a->createOperation();55 $b->numA=1;56 $b->numB=5;57 $c=$b->getResult();58 var_dump($c);
运行结果
int 6