您的位置:首页 > 编程语言 > PHP开发

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

2014-09-05 18:32 393 查看

概念介绍:

工厂方法模式: 在学习工厂方法模式之前请首先阅读简单工厂模式
工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中.
工厂方法模式是简单工厂模式的进一步抽象和推广

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

1、抽象工厂

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

3、抽象产品

4、具体产品

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

案例图:



代码实例:

<?php

//此实例是根据女娲造人写的

//首先定义一个全局的工厂接口
//由阴绳 阳绳来继承 都要实现举绳子这个方法
interface nvwaRope{
public function liftRope($name);
}

//定义阴绳 来继承 nvwaRope
class yinRope implements nvwaRope{
public function liftRope($name){
return new boy($name);
}
}

//定义阳绳
class yangRope implements nvwaRope{
public function liftRope($name){
return new girl($name);
}
}

//定义一个人的抽象接口
interface people{
public function eat();
public function getName();
}

abstract class abstractPeople implements people{
private $name;

public function __construct($name){
$this->name = $name;
}

public function eat(){
echo $this->name . " eat";
}

public function getName(){
echo $this->name;
return $this->name;
}

//检查是否有胸
public function checkChest(){
return $this->haveChest;
}
}

class boy extends abstractPeople{
public $haveChest = false; //男孩没有胸
}

class girl extends abstractPeople{
public $haveChest = true; //女孩有胸
}

//使用方式

//首先获取工厂的实例 也就是阴绳或者阳绳的实例
$yinRope = new yinRope();

$people = $yinRope->liftRope("张三");
echo $people->eat();
echo $people->getName();
var_dump($people->checkChest());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: