php设计模式 — 工厂方法模式(多态性工厂模式) (虚拟构造子模式)

王朝学院·作者佚名  2016-05-25  
宽屏版  字体: 小 | 中 | 大 | 超大  

php设计模式 — 工厂方法模式(多态性工厂模式) (虚拟构造子模式) 2014-09-05 18:32 by 爱情香烟, ... 阅读, ... 评论, 收藏, 编辑 概念介绍:工厂方法模式: 在学习工厂方法模式之前请首先阅读简单工厂模式工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中.工厂方法模式是简单工厂模式的进一步抽象和推广

工厂方法模式的几个需要的对象:

1、抽象工厂

2、具体工厂:实现抽象工厂接口列出的方法,并且每个工厂对应各自的产品

3、抽象产品

4、具体产品

简单工厂模式里面的果园的例子,可以改写成工厂方法模式 , 大家可以自己实验。

案例图:

代码实例: 1 <?php 2 3 //此实例是根据女娲造人写的 4 5 //首先定义一个全局的工厂接口 6 //由阴绳 阳绳来继承 都要实现举绳子这个方法 7 interface nvwaRope{ 8 public function liftRope($name); 9 }10 11 //定义阴绳 来继承 nvwaRope12 class yinRope implements nvwaRope{13 public function liftRope($name){14 return new boy($name);15 }16 }17 18 //定义阳绳 19 class yangRope implements nvwaRope{20 public function liftRope($name){21 return new girl($name);22 }23 }24 25 26 //定义一个人的抽象接口27 interface people{28 public function eat();29 public function getName();30 }31 32 33 abstract class abstractPeople implements people{34 PRivate $name;35 36 public function __construct($name){37 $this->name = $name;38 }39 40 public function eat(){41 echo $this->name . " eat";42 }43 44 public function getName(){45 echo $this->name;46 return $this->name;47 }48 49 //检查是否有胸50 public function checkChest(){51 return $this->haveChest;52 }53 }54 55 class boy extends abstractPeople{56 public $haveChest = false; //男孩没有胸57 }58 59 class girl extends abstractPeople{60 public $haveChest = true; //女孩有胸61 }62 63 64 65 //使用方式66 67 //首先获取工厂的实例 也就是阴绳或者阳绳的实例68 $yinRope = new yinRope();69 70 $people = $yinRope->liftRope("张三");71 echo $people->eat();72 echo $people->getName();73 var_dump($people->checkChest());

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有