国内最新新闻十篇,网络seo软件,北京 网站建设 知乎,前端开发转行做什么好1. 设计模式的分类
创建型模式(五种)#xff1a;工厂方法模式、单例模式、抽象工厂模式、原型模式、建造者模式。 结构型模式(七种)#xff1a;适配器模式、代理模式、装饰器模式、桥接模式、外观模式、享元模式、组合模式。 行为型模式(十一种)#xff1a;状态模式、模板方…1. 设计模式的分类
创建型模式(五种)工厂方法模式、单例模式、抽象工厂模式、原型模式、建造者模式。 结构型模式(七种)适配器模式、代理模式、装饰器模式、桥接模式、外观模式、享元模式、组合模式。 行为型模式(十一种)状态模式、模板方法模式、访问者模式、迭代子模式、责任链模式、备忘录模式、解释器模式、命令模式、中介者模式、观察者模式、策略模式。
2. 什么是原型模式
原型模式是一种创建型设计模式它允许一个对象在创建另一个可定制的对象而无需知道如何创建的细节。这种模式通过复制现有的对象来创建新的实例而不是新建一个。原型模式的主要优点是它可以避免直接创建对象的开销特别是当对象创建过程复杂或耗时时。 (将原型模式融入生活更好理解)想象一下你正在制作陶器。你有一个原始的陶器模型你可以通过复制这个模型来创建许多相似的陶器。这个过程不需要从头开始制作每一个陶器而是通过复制一个已经存在的模型来快速创建新的陶器。这就是原型模式的核心思想通过复制已有对象来创建新对象而不是每次都从头开始创建。 3. 原型模式的组成
原型模式通常包含以下角色
原型Prototype这是一个抽象类或接口声明了克隆自身的接口。具体原型Concrete Prototype实现克隆接口以创建自己的副本。客户端Client使用克隆方法创建对象的实例。
4. 原型模式的实现
4.1 定义一个原型接口
首先定义一个原型接口它声明了一个 clone() 方法。
public interface Prototype extends Cloneable{Prototype clone();
}
4.2 创建具体原型类
然后创建一个具体的原型类实现 Prototype 接口并重写 clone() 方法。
public class ConcretePrototype implements Prototype{private String id;private String value;public ConcretePrototype(String id, String value) {this.id id;this.value value;}Overridepublic Prototype clone() {try {return (ConcretePrototype)super.clone();} catch (CloneNotSupportedException e) {throw new RuntimeException(e);}}public String getId() {return id;}public void setId(String id) {this.id id;}public String getValue() {return value;}public void setValue(String value) {this.value value;}Overridepublic String toString() {return ConcretePrototype{ id id \ , value value \ };}
}
4.3 客户端代码
最后编写客户端代码使用原型模式创建对象的副本。
public class Main {public static void main(String[] args) {//创建一个原型实例ConcretePrototype prototype new ConcretePrototype(1,阿伟);//克隆原型创建一个新对象Prototype clonePrototype prototype.clone();System.out.println(Original: prototype);System.out.println(Clone: clonePrototype);}
}
以下为运行结果 5. 原型模式的适用场景
原型模式适用于以下场景
创建对象成本较大时如果创建对象的实例非常消耗资源使用原型模式可以避免不必要的开销。创建对象需要很多时间当对象的创建过程非常耗时时原型模式可以提供一种快速的创建方式。对象创建需要特定环境或条件在某些情况下对象的创建依赖于特定环境或条件原型模式可以简化这一过程。
6. 总结
原型模式是一种强大的设计模式它可以显著提高对象创建的效率特别是在对象创建成本较高或需要特定条件时。通过实现 Cloneable 接口和重写 clone() 方法我们可以轻松地在Java中实现原型模式。希望本文能帮助你更好地理解和应用原型模式。