欢迎光临散文网 会员登陆 & 注册

设计模式:原型模式

2021-04-11 00:30 作者:做架构师不做框架师  | 我要投稿

什么是原型模式?

原型模式(英文:Prototype Pattern),通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。

一句话归纳

拔一根猴毛,吹出千万个。

代码示例

众所周知,在中国四大名著《西游记》里孙悟空,本领高强,上天遁地,无所不能,他有一个本领就是“拔一根猴毛,吹出千万个”。

适用性

以下场景我建议你考虑使用:

  • 类的初始化需要消耗很多资源;

  • 构造函数比较复杂的时候;

  • 循环体中产生大量对象的时候;

  • new 产生对象时需要大量繁琐的工作时候(权限、数据准备等 );

  • 一个对象有多个修改者的时候;

局限性

以下场景我建议你谨慎使用:

  • 必须实现Cloneable接口;

  • 对现有类进行改造的时候;

  • 要使用clone方法,类的成员变量不能加final关键字;

  • 浅拷贝和深拷贝的问题。

深克隆和浅克隆

  • 浅拷贝:只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝,还是指向本对象的内部元素地址。

  • 深拷贝:你修改你的,我修改我的,不相互影响。

  • clone()方法的原理是从内存(具体来讲是堆内存)以二进制流的方式进行拷贝,重新分配一个内存块,所以构造器没有执行。

  • 与通过一个类的实例化对象不同的是,原型模式是通过拷贝一个现有对象生成对象,浅拷贝是通过clone()方法,深拷贝是通过实现Serializable读取二进制流。

写在最后

最后,好兄弟,记得点赞,关注,谢谢。


设计模式:原型模式的评论 (共 条)

分享到微博请遵守国家法律