原型模式概念
原型模式(Prototype Pattern)是23种设计模式之一,它的主要作用是用于创建重复的对象,同时又能保证性能。通过克隆一个现有对象来生成新的对象,而不是使用 new 运算符创建。
实现原理 原型模式的实现原理非常简单,首先需要一个可以被克隆的原型对象,然后通过调用该原型对象的克隆方法,从而得到一个新的对象。
在 Java 中,Object 类提供了一个 clone() 方法,该方法可以将一个对象复制一份,但需要实现 Cloneable 接口,否则会抛出 CloneNotSupportedException 异常。
原型模式优缺点
接下来介绍下原型模式的优缺点
优点:
可以通过克隆现有的对象来创建新的对象,避免了对象的重复创建,提高了系统性能。 可以动态的添加或修改原型对象的属性,可以扩展性好。
缺点:
必须实现 Cloneable 接口,并重写 clone() 方法,这在某些情况下可能会影响到其他接口的实现。 对象中包含的所有成员变量都必须支持 clone() 方法,否则无法进行克隆。 克隆是浅拷贝,如果需要深拷贝需要额外处理。
适用场景 希望避免重复创建相似对象,同时又希望保证性能。 希望动态的扩展对象的属性,同时又希望保证代码的简洁性。
原型模式案例
下面通过一个案例来一起来学习原型模式,详细代码片段如下:
// 定义一个可克隆对象接口
interface Cloneable {
public Object clone();
}
// 定义一个具体可克隆对象类
class ConcretePrototype implements Cloneable {
private String name;
public ConcretePrototype(String name) {
this.name = name;
}
// 实现克隆方法,返回新的对象副本
public Object clone() {
return new ConcretePrototype(this.name);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
// 客户端调用
public class Client {
public static void main(String[] args) {
// 创建原型对象
ConcretePrototype prototype = new ConcretePrototype("origin");
// 复制一个新对象
ConcretePrototype clone = (ConcretePrototype)prototype.clone();
// 修改克隆对象的属性
clone.setName("clone");
// 输出结果
System.out.println(prototype.getName()); // 输出 "origin"
System.out.println(clone.getName()); // 输出 "clone"
}
}
在上面的示例中,我们首先定义了一个可克隆对象接口 Cloneable 和一个具体可克隆对象类 ConcretePrototype。该类实现了克隆方法,并在其中创建了一个新的对象副本。客户端通过调用克隆方法来复制一个新的对象,并可以修改其属性。
这是一个简单的原型模式示例,它展示了如何通过复制现有对象来生成新的对象副本。在实际应用中,原型模式通常会更复杂一些,但这个简单示例足以说明原型模式的基本原理。
好了,本篇文章就先分享到这里了,后续将会继续介绍23种设计模式之其他模式,感谢大佬认真读完支持咯~