【设计模式-原型】Egan好不容易来的加薪机会
首先我们带Egan来一起了解下什么是【原型模式】
原型模式创建一个和原型相同或相似的新对象
在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。
由于 Java 提供了对象的 clone() 方法,所以用 Java 实现原型模式很简单。
-
抽象原型类:规定了具体原型对象必须实现的接口
-
具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。
-
访问类:使用具体原型类中的 clone() 方法来复制新的对象。
类图也是超级简单
以下来讲一个简单的例子
用原型模式模拟“孙悟空”复制自己。
分析:孙悟空拔下猴毛轻轻一吹就变出很多孙悟空,这实际上是用到了原型模式。这里的孙悟空类 SunWukong 是具体原型类,而 Java 中的 Cloneable 接口是抽象原型类。
大家有没有发现:
孙悟空类需要有一个有参的构造方法,但是孙悟空分身的时候不需要去传递参数。
是不是就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。
Egan开心的学完原型了,觉得挺简单的,但是哪些场景可以用到呢,Egan自己也不知道,就这样不了了之了……
过了很久很久
只到某一天
逗比经理又来找Egan,逗比经理找Egan绝没(dui)有(you)好(hong)事(bao)
就这样Egan就"咔咔"、“哒哒"开始写代码,
Egan行云流水般优雅的写完了代码。还跟逗比经理炫耀了一波,说自己写的代码超级优雅
逗比经理看Egan的代码中……
Egan美滋滋中……
突然逗比经理发来消息
很快Egan就找到数据计算的问题了,文件名字段存储的居然是解压之后的文件名,因为异步导致的,呼呜呜……
Egan想了想,要不创建一个新的FileInst对象把传递过来的数据设置到新的对象里面吧
于是有了下面这段代码
第二天逗比经理又发来了消息
好不容易来的加薪机会
Egan沉思中……
突然Egan窃喜
就这样Egan就"咔咔"、“哒哒"开始写代码,
Egan使用起了早期学习的原型模式
然后调用的地方
就这样Egan实现了加薪……
END
往期热门文章:
关注我哦