前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5.设计模式--原型模式(prototype模式)

5.设计模式--原型模式(prototype模式)

作者头像
大猫的Java笔记
发布2021-09-29 15:46:23
4470
发布2021-09-29 15:46:23
举报

1.场景

大学的时候毕业论文太难写了,所以直接抄同学的,但是这种你并不是一个字一个字的重写。而是使用cv大法(ctrl+c和ctrl+v),直接将毕业论文进行复制粘贴。然后自己就可以安心的去打游戏了。

原型模式是一种创建型模式,例如我们要创建一个Student对象都是采用的new Student();但是有些时候对象的创建十分复杂,这个时候原型模式就登场了,就像毕业论文太长了自己写太麻烦。所以我们选择复制。

2.原型模式结构图

Product是一个接口,表示产品的接口,只要是产品都会实现此接口,例如Television(电视)和Computer(电脑)。同时Product继承了Cloneable,原因是原型模式的复制是要基于clone方法的,而clone方法必须实现Cloneable接口。

3.原型模式的实现

Product是一个接口,表示产品的接口,只要是产品都会实现此接口。

Television(电视)表示的就是电视产品,实现Product接口。同时拥有自己的品牌和制造日期。

Computer(电脑)表示的就是电脑产品,实现Product接口。同时拥有自己的品牌和制造日期。

Computer(电脑)和Television(电视)都是一个产品,可以理解为这两个对象是很难创建的,相当于同学的毕业论文,我们如果自己去写毕业论文由于太长了就比较困难。

可以看到我们只需要调用具体产品的createClone方法,进行复制即可,此时对象就重新被创建出来了,也就是复制了同学的毕业论文。

ps:需要注意,代码中实现的clone只是浅拷贝,而不是深拷贝。如果业务需要应该使用深拷贝进行复制操作。

4.JDK中的原型模现

同样是ArrayList,的clone方法。可以看到ArrayList就是这样一个场景,当ArrayList中存储的数据太多的时候,如果我们自己在重新创建一个一样的,实际上是很复杂的,而clone方法则帮我们进行了复制。

原型模式一般是解决对象的创建比较复杂的场景,原型模式优缺点如下

优点:能够解决复杂对象的创建,同时进行解耦,如果复杂的每次自己创建,再具体产品进行修改后,业务代码全部可能会进行调整。

缺点:每个具体的产品必须要实现Cloneable接口,同时如果要实现深拷贝实际上是比较复杂的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的Java笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档