热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP设计模式之原型模式(Prototype)代码实例大全(六)

目的相比正常创建一个对象(newFoo()),首先创建一个原型,然后克隆它会更节省开销。示例大数据量(例如:通过ORM模型一次性往数

目的

相比正常创建一个对象 (new Foo () ),首先创建一个原型,然后克隆它会更节省开销。

示例


  • 大数据量 (例如:通过 ORM 模型一次性往数据库插入 1,000,000 条数据) 。

UML 图

★官方PHP高级学习交流社群「点击」管理整理了一些资料,BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)以及不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货


代码


  • BookPrototype.php


{/*** @var string*/protected $title;/*** @var string*/protected $category;abstract public function __clone();public function getTitle(): string{return $this->title;}public function setTitle($title){$this->title = $title;}
}

  • BarBookPrototype.php


{/*** @var string*/protected $category = 'Bar';public function __clone(){}
}

  • FooBookPrototype.php


{/*** @var string*/protected $category = 'Foo';public function __clone(){}
}

测试


  • Tests/PrototypeTest.php


use DesignPatterns\Creational\Prototype\FooBookPrototype;
use PHPUnit\Framework\TestCase;class PrototypeTest extends TestCase
{public function testCanGetFooBook(){$fooPrototype &#61; new FooBookPrototype();$barPrototype &#61; new BarBookPrototype();for ($i &#61; 0; $i <10; $i&#43;&#43;) {$book &#61; clone $fooPrototype;$book->setTitle(&#39;Foo Book No &#39; . $i);$this->assertInstanceOf(FooBookPrototype::class, $book);}for ($i &#61; 0; $i <5; $i&#43;&#43;) {$book &#61; clone $barPrototype;$book->setTitle(&#39;Bar Book No &#39; . $i);$this->assertInstanceOf(BarBookPrototype::class, $book);}}
}

PHP 互联网架构师成长之路*「设计模式」终极指南

PHP 互联网架构师 50K 成长指南&#43;行业问题解决总纲&#xff08;持续更新&#xff09;

面试10家公司&#xff0c;收获9个offer&#xff0c;2020年PHP 面试问题

★如果喜欢我的文章&#xff0c;想与更多资深开发者一起交流学习的话&#xff0c;获取更多大厂面试相关技术咨询和指导&#xff0c;欢迎加入我们的群-点击此处&#xff08;群号码856460874&#xff09;。

内容不错的话希望大家支持鼓励下点个赞/喜欢&#xff0c;欢迎一起来交流&#xff1b;另外如果有什么问题 建议 想看的内容可以在评论提出


推荐阅读
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 装饰模式(Deocrator)     动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。    所谓装饰,就是一些对象给主题 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 第四单元和课程总结:简单的架构设计意识
    一、第四单元架构设计总结第一次作业由于需要按名查找类图模型,于是建立&amp;quot;Class&amp;quot;类进行管理由于方法具有参数导致类中存在二级结构 ... [详细]
  • linux location root访问文件夹404_Linux下yum安装PHP7.2+Nginx+Mysql
    一.安装NGINX1.先查看是否安装了第三方软件库:yumlistinstalled|grepepel-release或rpm-qepel-release如果已经安装 ... [详细]
  • clickhouse 二(springboot+mybatis配置clickhouse,实现插入查询)
    原标题:clickhouse二(springboot+mybatis配置clickhouse,实现插入查询)开发步骤 ... [详细]
  • 智商狂飙,问了ChatGPT几个数据库问题后,我的眼镜掉了
    原标题:智商狂飙,问了ChatGPT几个数据库问题后,我的眼镜掉了最近,ChatGPT火爆全网,介绍其产品、公司、作者、技术和应用等方面信息,占据着整个互联网,似乎不谈GPT好像 ... [详细]
author-avatar
dsgfg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有