一、原型模式概念
原型模式是一种创建型设计模式,其核心思想是通过复制现有对象来创建新对象,而不是通过实例化类来创建。这种方式可以提高创建对象的效率,特别是当对象的创建过程比较昂贵或复杂时。
在原型模式中,原型对象是一个已经存在的对象,它作为新对象的模板。新对象通过复制原型对象的属性来创建,可以是浅拷贝(只复制基本数据类型的属性)或深拷贝(复制对象的所有属性,包括引用类型的属性)。
原型模式通常涉及以下几个角色:
-
原型接口(Prototype):定义了一个克隆自身的接口,可以是抽象类或接口。
-
具体原型类(Concrete Prototype):实现了原型接口,提供了克隆自身的方法。
-
客户端(Client):负责创建新对象的地方,通常通过克隆现有对象来创建新对象。
1.1 什么是原型模式
二、原型模式代码
2.1 原型接口
public interface Prototype {
Prototype clone();
}
2.2 具体原型类
public class ConcretePrototype implements Prototype {
private String property;
public ConcretePrototype(String property) {
this.property = property;
}
public void setProperty(String property) {
this.property = property;
}
public String getProperty() {
return property;
}
@Override
public Prototype clone() {
return new ConcretePrototype(this.property); // 浅拷贝
}
}
2.3 客户端
public class PrototypePatternTest {
public static void main(String[] args) {
ConcretePrototype prototype = new ConcretePrototype("Initial Property");
System.out.println("原型:" + prototype.getProperty());
ConcretePrototype clonedPrototype = (ConcretePrototype) prototype.clone();
System.out.println("克隆的原型: " + clonedPrototype.getProperty());
// 修改原型属性不影响克隆对象
prototype.setProperty("Modified Property");
System.out.println("修改后的原型: " + prototype.getProperty());
System.out.println("修改后的克隆原型: " + clonedPrototype.getProperty());
// 输出:
// 原型:Initial Property
// 克隆的原型: Initial Property
// 修改后的原型: Modified Property
// 修改后的克隆原型: Initial Property
}
}
三、总结
原型模式的优点包括:
- 减少了创建对象的开销,特别是当对象的创建过程比较复杂时。
- 可以通过复制现有对象来创建新对象,使得代码更加灵活,易于维护。
原型模式的缺点包括:
- 需要实现克隆方法,有时可能会比较麻烦。
- 如果对象的构造过程比较复杂,克隆可能并不是一个很好的选择。
总的来说,原型模式适用于需要创建大量相似对象,并且创建过程比较昂贵的情况下。
标签:设计模式,Java,克隆,对象,原型,ConcretePrototype,property,public From: https://www.cnblogs.com/Linzj5950/p/18182243