原型模式
介绍
原型模式属于五种创建模式中的一种。是用于创建重复的对象,同时又能保证性能的方式。该模式用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
结构
优点
- 使用原型模式创建对象比直接new一个对象性能上优异一些。因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流。
- 简化对象的创建,在原型模式中,创建对象变得简单许多。
缺点
- 每一个类都配置一个 clone 方法。
- 当类已存在后难以新增clone操作,当内部包括一些不支持拷贝或有循环引用的对象时,实现clone也变得困难。
拷贝
- 浅拷贝:创建一个新对象,基本数据类型变量全部重新创建,而引用仍指向原对象。
- 深拷贝:创建一个新对象,引用不再指向原对象。
使用场景
- 使用同一个类的大量对象。
- 初始化一个涉及复杂数据对象。
- 对对象的大量信息中的少量字段进行个性化设置
代码举例
public class ProtoTypeCitation {
public static void main(String[] args) throws CloneNotSupportedException {
citation obj1 = new people("小明","中国","杭州");
obj1.display();
people obj2 = (people) obj1.clone();
obj2.setName("小红");
obj2.display();
}
}
//类
class people Cloneable {
String name;
String country;
String city;
citation(String name, String country, String city) {
this.name = name;
this.country = country;
this.city = city;
System.out.println("信息创建成功!");
}
void setName(String name) {
this.name = name;
}
String getName() {
return (this.name);
}
void display() {
System.out.println(name + country + city);
}
public Object clone() throws CloneNotSupportedException {
System.out.println("拷贝成功!");
return (people) super.clone();
}
}
总结
原型模式的本质就是clone,通过clone解决构建复杂对象的资源消耗问题,提升对象构建的效率。同时还有保护性拷贝的功能。通过返回拷贝对象的形式来实现只读限制。
型模式的本质就是clone,通过clone解决构建复杂对象的资源消耗问题,提升对象构建的效率。同时还有保护性拷贝的功能。通过返回拷贝对象的形式来实现只读限制。