php实现原型模式
来源:互联网 发布:大数据hadoop指令 编辑:程序博客网 时间:2024/05/19 12:17
设计模式-使用php实现原型模式
【概要】
创建型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
【结构图】
【主要角色】
抽象原型(Prototype)角色:声明一个克隆自身的接口
具体原型(Concrete Prototype)角色:实现一个克隆自身的操作
【优缺点】
Prototype模式优点:
1、可以在运行时刻增加和删除产品
2、可以改变值以指定新对象
3、可以改变结构以指定新对象
4、减少子类的构造
5、用类动态配置应用
Prototype模式的缺点:
Prototype模式的最主要缺点就是每一个类必须配备一个克隆方法。
而且这个克隆方法需要对类的功能进行通盘考虑,这对全新的类来说不是很难,但对已有的类进行改造时,不一定是件容易的事。
【适用性】
1、当一个系统应该独立于它的产品创建、构成和表示时,要使用Prototype模式
2、当要实例化的类是在运行时刻指定时,例如动态加载
3、为了避免创建一个与产品类层次平等的工厂类层次时;
4、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些
【概要】
创建型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
【结构图】
【主要角色】
抽象原型(Prototype)角色:声明一个克隆自身的接口
具体原型(Concrete Prototype)角色:实现一个克隆自身的操作
【优缺点】
Prototype模式优点:
1、可以在运行时刻增加和删除产品
2、可以改变值以指定新对象
3、可以改变结构以指定新对象
4、减少子类的构造
5、用类动态配置应用
Prototype模式的缺点:
Prototype模式的最主要缺点就是每一个类必须配备一个克隆方法。
而且这个克隆方法需要对类的功能进行通盘考虑,这对全新的类来说不是很难,但对已有的类进行改造时,不一定是件容易的事。
【适用性】
1、当一个系统应该独立于它的产品创建、构成和表示时,要使用Prototype模式
2、当要实例化的类是在运行时刻指定时,例如动态加载
3、为了避免创建一个与产品类层次平等的工厂类层次时;
4、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些
【原型模式php实例】
<?php /** * 原型模式 * ------------- * @author zhaoxuejie <zxj198468@gmail.com> * @package design pattern * @version v1.0 2011-12-14 *///声明一个克隆自身的接口interface Prototype {public function copy();}//实现一个克隆自身的操作class ConcretePrototype implements Prototype {private $name;function __construct($name){$this->name = $name;}function getName(){return $this->name;}function setName($name){$this->name = $name;}//克隆function copy(){return clone $this;}}//客户端class Client {public static function main(){$pro = new ConcretePrototype('prototype');$pro2 = $pro->copy();echo $pro->getName();echo $pro2->getName();} }Client::main();?>
- php实现原型模式
- php,java实现原型模式
- PHP Prototype(原型)模式
- php 原型模式
- 15.php原型模式
- PHP 原型模式
- PHP 设计模式---原型模式
- C#实现原型模式
- C++实现原型模式
- 原型模式lua实现
- 原型模式C++实现
- 原型模式C++实现
- 原型模式实现
- 原型模式-c++实现
- 实现设计模式:原型模式
- 设计模式php实例:原型模式
- [转载]PHP设计模式之:原型模式
- PHP设计模式——原型模式
- 程序员面试、算法研究、编程艺术、红黑树4大系列集锦与总结
- zhuan
- 二.实现Menu按键的功能
- aix 安装gcc编译器
- 数据库表及字段命名规范
- php实现原型模式
- C#中的接口
- HTML/CSS/Javascript代码在线压缩、格式化(美化)工具
- VS2008 "当前不会命中断点。源代码与原始版本不同"解决方法
- V4L2视频采集的基本流程
- Xlib: connection to ":0.0" refused by server, Xlib: No protocol specified, Xlib: No protocol specifi
- session
- CSS文本多出变为.....应用
- Lua库和工具