用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
程序人生
›
浅谈PHP设计模式的原型模式
浅谈PHP设计模式的原型模式
宝塔山
论坛元老
|
2022-11-10 17:40:52
|
显示全部楼层
|
阅读模式
楼主
主题
1870
|
帖子
1870
|
积分
5610
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
简介:
原型模式,属于创建型模式的一种。
主要针对对象进行克隆,把被克隆的对象称之为原型,原型模式称之为克隆模式也许更为贴切。
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
适用场景:
实例化对象的资源开销过大时可直接克隆。
需要循环创建大量对象,此时用克隆也是一个挺不错的选择。
优点:
高性能:如果创建对象的过程复杂,或者消耗大量资源,那么直接克隆就可以高性能的简化这一流程。
实现简单,某些场景下,相比于实例化对象的各种前置操作,而克隆一个关键字就能搞定。
缺点:
克隆出来的对象与原型对象不是一个,可能在某些业务场景上,可能会受影响
代码:
//抽象出来一个操作系统的类
abstract class OS {
public $os;
//setOS可以理解为安装操作系统
public function installOS($os) {
$this->os = $os;
}
//runOS可以理解为运行操作系统
public function runOS() {
return $this->os . PHP_EOL;
}
//__clone方法是原型模式中需要有的,尽管可能用不上
abstract function __clone();
}
class Windows extends OS{
public function __clone() {}
}
class Linux extends OS{
public function __clone() {}
}
//调用端============================================
//伟大的工程师们
开发
好了两套操作系统
$windows = new Windows();
$linux = new Linux();
//把它们克隆到光盘上,分别给3个用户安装。这样就不用在从零
开发
操作系统了,直接复制开销极小,然后把它们运行起来。
for($i = 0; $i < 3; $i ++) {
$new_windows = clone $windows;
$new_windows->installOS('windows');
echo $new_windows->runOS();
}
//把它们克隆到光盘上,分别给2个用户安装。这样就不用在从零
开发
操作系统了,直接复制开销极小,然后把它们运行起来。
for($j = 0; $j < 2; $j ++) {
$new_linux = clone $linux;
$new_linux->installOS('linux');
echo $new_linux->runOS();
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
宝塔山
论坛元老
这个人很懒什么都没写!
楼主热帖
Sqlserver2012卸载
Maxwell 一款简单易上手的实时抓取Mysq ...
分布式事务 | 使用DTM 的Saga 模式 ...
哈工大信息安全概论期末复习 ...
WebLogic JNDI注入(CVE-2021-2109) ...
HTTPS基础原理和配置-3
数字IC-1.9 吃透通信协议中状态机的代 ...
轻量级CI/CD发布部署环境搭建及使用_03 ...
.NET服务治理之限流中间件-FireflySoft ...
[DuckDB] 多核算子并行的源码解析 ...
标签云
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表