首页 > 代码库 > php设计模式 — 工厂方法模式(多态性工厂模式) (虚拟构造子模式)
php设计模式 — 工厂方法模式(多态性工厂模式) (虚拟构造子模式)
概念介绍:
工厂方法模式: 在学习工厂方法模式之前请首先阅读简单工厂模式
工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中.
工厂方法模式是简单工厂模式的进一步抽象和推广
工厂方法模式的几个需要的对象:
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());
php设计模式 — 工厂方法模式(多态性工厂模式) (虚拟构造子模式)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。