php設計模式之工廠方法模式


php設計模式之工廠方法模式

工廠方法模式

工廠方法模式(Factory Method Pattern)又稱為工廠模式,也叫虛擬構造器(Virtual Constructor)模式或者多態工廠(Polymorphic Factory)模式,它屬於類創建型模式。在工廠方法模式中,工廠父類負責定義創建產品對象的公共接口,而工廠子類則負責生成具體的產品對象,這樣做的目的是將產品類的實例化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應該實例化哪一個具體產品類。

模式結構

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

  • Product:抽象產品
  • ConcreteProduct:具體產品
  • Factory:抽象工廠
  • ConcreteFactory:具體工廠

結構圖

這里寫圖片描述

PHP代碼實現

 1 <?php
 2 //抽象產品
 3 abstract class Operation
 4 {
 5     private $numA,$numB;
 6     public function __set($name,$value){
 7         $this->$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 Operation
18 {
19     public function getResult(){
20         $result=$this->numA+$this->numB;
21         return $result;
22     }
23 }
24 class OperateSub extends Operation
25 {
26     public function getResult(){
27         $result=$this->numA-$this->numB;
28         return $result;
29     }
30 }
31 
32 //抽象工廠
33 interface Factory
34 {
35     public function createOperation();
36 }
37 
38 //具體工廠
39 class AddFactory implements Factory
40 {
41     public function createOperation()
42     {
43         return new OperateAdd();
44     }
45 }
46 class SubFactory implements Factory
47 {
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

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com