原型模式
目的
使用原型实例指定要创建对象的类型,通过复制这个原型来创建新对象。
类图
角色
- Client : 调用类
- Prototype : 抽象原型类
- ConcretePrototype:具体实现类
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kTC0VAQM-1592733102040)(http://img.llc687.top/uPic/1592361557889-9a2b4faf-1674-4edb-9209-8a075a4ba242-20200621162145843.png)]](https://i-blog.csdnimg.cn/blog_migrate/73503d082d27330255c9b9723dff7000.png)
实现
原型类
public abstract class Prototype {
abstract Prototype clone();
}
实现类
public class ConcretePrototype extends Prototype {
private String filed;
public ConcretePrototype(String filed) {
this.filed = filed;
}
@Override
Prototype clone() {
return new ConcretePrototype(filed);
}
@Override
public String toString() {
return filed;
}
}
调用类
public class Client {
public static void main(String[] args) {
Prototype prototype = new ConcretePrototype("abc");
Prototype clone = prototype.clone();
...
}
}
优缺点
优点
- 隐藏了对象创建的细节,大大提升了性能。
- 不用重新初始化对象,而是动态的获得对象运行时的状态。
缺点
深复制 or 浅复制 。
使用场景
在初始化信息不发生变化的情况下,或者需要重复创建相似对象时可以考虑使用。比如 JDK 中的 Date 类。

被折叠的 条评论
为什么被折叠?



