PHP设计模式——原型模式
声明:本系列博客参考资料《大话设计模式》,作者程杰。
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。
在php中,类已经实现了原型模式,php有个魔术方法__clone()方法,会克隆出一个这样的对象。
看一下UML类图:
角色分析:
1.抽象原型,提供了一个克隆的接口
2.具体的原型,实现克隆的接口
具体的代码:
/**抽象原型类* Class Prototype*/
abstract class Prototype
{abstract function cloned();
}/**具体原型类* Class Plane*/
class Plane extends Prototype
{public $color;function Fly(){echo "飞机飞啊飞!<br/>";}function cloned(){return clone $this;}
}
客户端测试代码:
header("Content-Type:text/html;charset=utf-8");
//------------------------原型模式测试代码------------------
require_once "./Prototype/Prototype.php";$plane1=new Plane();
$plane1->color="Blue";$plane2=$plane1->cloned();$plane1->Fly();
$plane2->Fly();echo "plane1的颜色为:{$plane1->color}<br/>";
echo "plane2的颜色为:{$plane2->color}<br/>";
这里只是介绍一下原型模式的核心思想,其实在实际开发中直接clone即可。
欢迎关注我的视频课程,地址如下,谢谢。
PHP面向对象设计模式
PHP设计模式——原型模式相关推荐
- 设计模式 原型模式_创新设计模式:原型模式
设计模式 原型模式 原型模式用于创建对象的副本. 这种模式非常有用,特别是当从头开始创建对象的成本很高时. 与builder , factory和abstract factory模式相比,它不会从头开 ...
- 设计模式 原型模式_设计模式:原型
设计模式 原型模式 创新设计模式之一是原型设计模式 . 尽管原型是创造模式,但它在概念上与其他模式有所区别. 我的意思是原型在某种意义上创造了自己. 我将在下面解释. 原型模式的所有魔力都基于Java ...
- 设计模式 原型模式_原型设计模式:创建另一个小车
设计模式 原型模式 创建对象确实是一个耗时的过程,也是一件昂贵的事情. 因此,我们现在正冒险节省时间和金钱. 我们该怎么做? 克隆奇迹多莉 有人记得多莉吗? 是的,是绵羊,是第一个被克隆的哺乳动物. ...
- Java常用设计模式————原型模式(一)
介绍 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型模式用于创建重复的对象,同时又能保证性能.当直接创建对象的代价比较大时,则采用 ...
- 第六章 Caché 设计模式 原型模式
文章目录 第六章 Caché 设计模式 原型模式 定义 使用场景 优点 结构图 描述 示例 初级写法 缺点 中级写法 缺点 高级写法 (浅复制) 浅复制 深复制 完整示例 简历类(复制类) 对象类(工 ...
- C++设计模式——原型模式(Prototype Pattern)
C++设计模式--原型模式(Prototype Pattern) 微信公众号:幼儿园的学霸 目录 文章目录 C++设计模式--原型模式(Prototype Pattern) 目录 定义 代码示例 普通 ...
- 设计模式---原型模式(Prototype Pattern)
在编程中有时候我们会发现,当我们需要一个实例,可是这个实例的创建过程十分复杂,在执行过程中 会消耗大量的时间,同时创建第一个实例和创建第二个时间的初始化信息并未改变.在此种情况下,直接New 一个实例 ...
- 精通python设计模式-浅谈Python设计模式 - 原型模式
声明,本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在<精通Python设计模式>中把设计模式分为三种类型: 创建型模式 ...
- [设计模式]原型模式
简介 原型模式 (Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式是一种对象创建型模式 (可参考 设计模式 创建型模式). 结构 图-原型模式结构图 Pr ...
- Java设计模式——原型模式
概述 原型模式是为了解决一些不必要的对象创建过程.当Java JDK中提供了Cloneable接口之后,原型模式就变得异常的简单了.虽然由于Cloneable的引入使用程序变得更简单了,不过还是有一些 ...
最新文章
- Chem. Sci. | SyntaLinker: 基于Transformer神经网络的片段连接生成器
- mysql中文乱码解决方案_关于MySQL中文乱码的完美解决方案
- 文凭-决定的人生成败?下
- 设置更改root密码(远程,本地)、连接mysql、mysql常用命令
- 定义,公理,定理,引理,推论,命题,推测,猜想
- ReactiveNative学习之Diff算法
- 五大板块(5)——字符串
- gRPC in ASP.NET Core 3.0 -- 前言
- db2 命令选项解释
- find 命令_除了 find,还有这些文件查找命令
- PHP运算符 - 对象的方法或者属性, =数组的元素值
- [转]华人总结“十个”出了国才能知道秘密!
- Verilog三段式状态机描述
- 我们为何要选择使用LINUX?--大家自己体会
- python Requests+正则表达式爬取猫眼电影top100
- c语言sqar是double,C语言怎么编写正弦波
- verilog 中的冒泡排序法
- 7条命令在docker中部署Mesos集群
- 2020.1.13 C语言学习 结构体+结构体数组+结构体指针
- 英特尔 NUC 豆子峡谷 安装ubantu 的总结
热门文章
- python3 redis长链接超时_Python3 连接Redis字符串和字节问题探究
- 数字化工厂的五大系统_工厂通过MES系统对车间设备数字化管理
- 三菱st语言编程实例_C语言编程实例39
- wp login.php 打不开,解决wordpress后台无法登录或显示空白的问题
- 如何使用Intellij IDEA工具导入SVN项目
- 蓝牙 查询码 android,android bluetooth UUID蓝牙查询表
- vb.net 模拟鼠标 失去焦点_孢子:EA最成功的神作,虽能“模拟万物”但却落得昙花一现...
- 空间数据挖掘主要方法
- Android NDK开发之 opencv for android 问题总结
- css3 flex布局九宫格,css3最全flex布局结构整理