星空网 > 软件开发 > ASP.net

PHP设计模式 原型模式(Prototype)

定义

和工厂模式类似,用来创建对象。但实现机制不同,原型模式是先创建一个对象,采用clone的方式进行新对象的创建。

场景

大对象的创建。

优点

1、可以在运行时刻增加和删除产品

2、可以改变值或结构以指定新对象

3、减少子类的构造

4、用类动态配置应用

缺点

Prototype是的最主要的缺点就是每一个类必须包含一个克隆方法;

而且这个克隆方法需要对类的功能进行检测,这对于全新的类来说较容易,但对已有的类进行改造时将不是件容易的事情;

要点

1、构建一个原型对象

2、对其进行初始化

3、对原型对象进行克隆操作

代码示例

简单实现

<?php/** * PHP设计模式 原型模式(prototype) * User: pyzn * Date: 2016-03-22 * Time: 14:08 *//** * Class Object * 一个结构复杂的对象原型 */class Object{  public function init()  {    //一些很占用系统资源的操作  }  public function run()  {  }}//常规方式$obj1 = new Object();$obj1->init();$obj1->run();$obj2 = new Object();$obj2->init();$obj2->run();//原型模式$prototype = new Object();$prototype->init();$obj1 = clone $prototype;$obj1->run();$obj2 = clone $prototype;$obj2->run();


 

复杂实现

PHP设计模式 原型模式(Prototype)

/** * PHP设计模式 原型模式(prototype)的复杂实现 * User: pyzn * Date: 2016-03-22 * Time: 14:08 *//** * Interface IPrototype * 声明一个克隆自身的接口,对原型角色的抽象 */interface IPrototype{  public function copy();}class PrototypeObject implements IPrototype{  private $name;  public function __construct($name)  {    $this->name = $name;  }  public function setName($name)  {    $this->name = $name;  }  public function getName()  {    return $this->name;  }  public function copy()  {    /*     * 浅copy     */    //return clone $this;    /*     * 深copy     */    $serializeStr = serialize($this);    $cloneObj = unserialize($serializeStr);    return $cloneObj;  }}class Client{  public static function main()  {    $prototype = new PrototypeObject("test");    $pro1 = $prototype->copy();    $pro2 = $prototype->copy();    $pro2->setName("test2");    var_dump($pro1);    var_dump($pro2);  }}Client::main();




原标题:PHP设计模式 原型模式(Prototype)

关键词:PHP

PHP
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

跨境电商行业趋势:https://www.goluckyvip.com/tag/35773.html
跨境电商行业商业模式:https://www.goluckyvip.com/tag/35774.html
跨境电商行业数据:https://www.goluckyvip.com/tag/35775.html
跨境电商行业调研报告:https://www.goluckyvip.com/tag/35776.html
跨境电商行业投资:https://www.goluckyvip.com/tag/35777.html
跨境电商行业投资报告:https://www.goluckyvip.com/tag/35778.html
石象湖景区门票-石象湖景区门票优惠政策:https://www.vstour.cn/a/411243.html
北京到嵩山自驾游沿途景点 北京距离嵩山有多远:https://www.vstour.cn/a/411244.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流