当前位置: 首页 > news >正文

五指山市网站建设_网站建设公司_前端工程师_seo优化

游戏网站制作教程,企业网站四种类型,阿里巴巴全球采购网,南昌地宝网出租房信息个人公众号原文#xff1a;创建型模式#xff1a;原型模式 五大创建型模式之五#xff1a;原型模式。 简介 姓名 #xff1a;原型模式 英文名 #xff1a;Prototype Pattern 价值观 #xff1a;效率第一 个人介绍 #xff1a; Specify the kinds of objects to create u…个人公众号原文创建型模式原型模式 五大创建型模式之五原型模式。 简介 姓名 原型模式 英文名 Prototype Pattern 价值观 效率第一 个人介绍 Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype. 用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象。 来自《设计模式之禅》 又到了一个系列的最后一篇文章了今天是创建型模式的最后一篇。什么是创建型模式呢创建型模式是对类的实例化过程进行抽象使对象的创建和使用分离从而使代码更加灵活。 我们平时使用最多的一种创建对象方式就是 new ABC()直接通过构造方法来创建一个对象。通过原型模式来创建对象则不用调用构造方法就可以创建一个对象。下面来揭开它的面纱。 你要的故事 前几天有出版社的老师邀请写书鉴于深知自己水平还不足以出书所以没有合作还在努力学习以后有能力有机会再考虑这方面的事情。 今天的故事就从出书讲起。我们知道一本新书发版的时候会复印很多册如果销售得好会有很多个印刷版本。我们来了解复印一批书籍这个过程是怎么实现的。小明写下了下面这段代码。 public class NoPrototypeTest {public static void main(String[] args) {for (int i 1; i 10; i ) {Book book new Book(娱乐至死, 尼尔波兹曼, 社会科学, XXXX);System.out.println(复印书籍 book.getName() 第 i 本);}}}class Book {private String name;private String author;private String type;private String content;public Book(String name, String author, String type, String content) {this.name name;this.author author;this.type type;this.content content;System.out.println(实例化书籍 this.name);}public String getName() {return name;}public void setName(String name) {this.name name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author author;}public String getType() {return type;}public void setType(String type) {this.type type;}public String getContent() {return content;}public void setContent(String content) {this.content content;} }// 打印结果 实例化书籍娱乐至死 复印书籍娱乐至死第 1 本 实例化书籍娱乐至死 复印书籍娱乐至死第 2 本 实例化书籍娱乐至死 复印书籍娱乐至死第 3 本 实例化书籍娱乐至死 复印书籍娱乐至死第 4 本 实例化书籍娱乐至死 复印书籍娱乐至死第 5 本 实例化书籍娱乐至死 复印书籍娱乐至死第 6 本 实例化书籍娱乐至死 复印书籍娱乐至死第 7 本 实例化书籍娱乐至死 复印书籍娱乐至死第 8 本 实例化书籍娱乐至死 复印书籍娱乐至死第 9 本 实例化书籍娱乐至死 复印书籍娱乐至死第 10 本上面小明的代码复印了 10 本《娱乐至死》代码逻辑没有问题有个问题就是复印一本就实例化一次书籍这个实例化可以减少么使用原型模式可以实现。小明根据这些提示重新修改了代码。 public class PrototypeTest {public static void main(String[] args) {Book2 book1 new ConcreteBook(娱乐至死, 尼尔波兹曼, 社会科学, XXXX);System.out.println(复印书籍 book1.getName() 第 1 本);for (int i 2; i 10; i ) {Book2 book2 (Book2) book1.clone();System.out.println(复印书籍 book2.getName() 第 i 本);}}}/*** 抽象类*/ abstract class Book2 implements Cloneable {private String name;private String author;private String type;private String content;public Book2(String name, String author, String type, String content) {this.name name;this.author author;this.type type;this.content content;System.out.println(实例化书籍 this.name);}public String getName() {return name;}public void setName(String name) {this.name name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author author;}public String getType() {return type;}public void setType(String type) {this.type type;}public String getContent() {return content;}public void setContent(String content) {this.content content;}Overrideprotected Object clone() {try {return super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return null;} }/*** 具体类*/ class ConcreteBook extends Book2 {public ConcreteBook(String name, String author, String type, String content) {super(name, author, type, content);} }打印结果 实例化书籍娱乐至死 复印书籍娱乐至死第 1 本 复印书籍娱乐至死第 2 本 复印书籍娱乐至死第 3 本 复印书籍娱乐至死第 4 本 复印书籍娱乐至死第 5 本 复印书籍娱乐至死第 6 本 复印书籍娱乐至死第 7 本 复印书籍娱乐至死第 8 本 复印书籍娱乐至死第 9 本 复印书籍娱乐至死第 10 本 看打印结果和第一次实现的结果完全不一样这一次只实例化了一次后面复印的书籍都没有实例化。我们看看代码的变化代码中最最主要的就是 Book2 实现了 Cloneable 接口这个接口有个 clone() 方法通过实现这个方法可以实现对象的拷贝就是不用调用构造方法直接通过对内存的拷贝来创建一个新的对象。这就是原型模式的实现方式通过原型模式可以提高创建对象的效率。 代码Prototype Pattern 总结 通过原型模式绕过构造方法创建对象利用内存直接拷贝对象提高对象的创建性效率。在有大量的对象创建或者类初始化消耗多资源的场景下可以利用原型模式来优化。当然在实现的过程中要注意浅拷贝与深拷贝的问题防止写出 bug文章主要介绍原型模式就不详细说这个问题了留给大家去扩展了解。 参考资料《大话设计模式》、《Java设计模式》、《设计模式之禅》、《研磨设计模式》、《Head First 设计模式》 推荐阅读创建型模式单例模式创建型模式工厂方法创建型模式抽象工厂创建型模式原型模式公众号之设计模式系列文章 希望文章对您有所帮助设计模式系列会持续更新感兴趣的同学可以关注公众号LieBrother第一时间获取文章推送阅读也可以一起交流交个朋友。 转载于:https://www.cnblogs.com/liebrother/p/10328436.html
http://www.ihoyoo.com/news/100796.html

相关文章:

  • 正版传奇手游官方网站西安做网站公司报价
  • 重庆推广网站排名价格高端品牌网站建设兴田德润在哪儿
  • flash 网站 收费有哪些好的模板网站
  • 网站主题类型网站优化都是怎么做的
  • 南京做网站的首页关键词排名代发
  • 平原网站建设电话做家纺的网站
  • 网站首页轮播图怎么换南昌专业网站建设机构
  • 网站后台 二级域名龙岩市住房与城乡建设部网站
  • 网站推广怎么写举例网络营销的例子
  • 自己做的网站容易被黑吗建立一个网站商城需要多久时间
  • 学做衣服网站有哪些泉州仿站定制模板建站
  • 江门网站推广技巧服务贵州省建设项目备案查询网站
  • 湖北响应式网站建设企业wordpress信息分类主题
  • 株洲做网站渠道电话一个网站开发的意义
  • 镇雄县城乡建设局网站辽宁建设工程信息网新版网址
  • 哈尔滨品牌网站建设做网站哪个公司可以做
  • 耒阳做网站免费网站现在是怎么了
  • 网站进度条特效网页搭建代码
  • 一个公司可以做2个网站么网站插件 wordpress
  • 什么做网站赚钱郑州网站建设优化公司
  • 制作营销网站模板免费下载深圳火狼设计公司招聘网站
  • 做爰全过程网站免费的视频天津 网站开发
  • 重庆网站建设 快速建站东莞网站设计在哪里
  • 网站没备案怎么做加速wordpress导航栏文字大小不一
  • 门户网站开发需要多少钱代挂QQ建设网站
  • 某网络公司网站源码 蓝色建站企业网站源码装修网站排名
  • 怎么做整人网站wordpress问卷模板
  • 在家自己做网站网页制作超链接怎么做
  • 优秀的网站建设价格星斗科技 网站建设
  • 一个网站的设计周期wordpress安装失败