塘沽网站开发,茶叶有什么网站可以做推广,宜昌市高新区建设局网站,石家庄 网站编辑系列文章目录
设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式#xff0c;每一种模式的概念、使用…系列文章目录
设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式每一种模式的概念、使用场景和优缺点。 设计模式之模板方法模式通俗易懂快速理解以及模板方法模式的使用场景 设计模式之-建造者模式通俗易懂理解以及建造者模式的使用场景和示列代码 设计模式之-代理模式快速掌握理解代理模式以及代理模式的使用场景 设计模式之-原型模式快速掌握原型模式通俗易懂的理解原型模式以及使用场景 设计模式之-中介者模式快速掌握中介者模式通俗易懂的讲解中介者模式以及它的使用场景 设计模式之-责任链模式快速掌握责任链模式通俗易懂的讲解责任链模式以及它的使用场景 设计模式之-装饰模式快速掌握装饰模式通俗易懂的讲解装饰模式以及它的使用场景 文章目录 系列文章目录一、什么是原型模式二、使用场景三、代码示例 一、什么是原型模式
原型模式是一种创建型设计模式它允许通过复制现有对象来创建新的对象而无需通过调用构造函数来创建。原型模式通过克隆操作来创建对象提供了一种更加灵活和高效的对象创建方式。
在现实生活中原型模式的例子可以是制作玩具的模具。模具原型对象定义了玩具的形状和细节而根据模具可以快速复制出多个相同的玩具克隆对象。
二、使用场景
当创建新对象的成本较高时可以使用原型模式来复制一个现有对象来创建新对象避免了重复的初始化操作。当需要创建的对象是动态的并且无法提前确定其具体类型时可以使用原型模式。通过克隆操作可以将复制对象的具体类型由运行时动态决定。
三、代码示例
下面是一个通俗易懂的原型模式示例代码以动物克隆为场景
// 抽象原型动物
abstract class Animal implements Cloneable {private String name;public Animal(String name) {this.name name;}public String getName() {return name;}public abstract Animal clone();
}// 具体原型猫
class Cat extends Animal {public Cat(String name) {super(name);}Overridepublic Animal clone() {return new Cat(getName());}
}// 具体原型狗
class Dog extends Animal {public Dog(String name) {super(name);}Overridepublic Animal clone() {return new Dog(getName());}
}// 客户端代码
public class Main {public static void main(String[] args) {Animal cat new Cat(Tom);Animal clonedCat cat.clone();System.out.println(Original Cat: cat.getName());System.out.println(Cloned Cat: clonedCat.getName());Animal dog new Dog(Max);Animal clonedDog dog.clone();System.out.println(Original Dog: dog.getName());System.out.println(Cloned Dog: clonedDog.getName());}
}在上面的示例中Animal是抽象原型类定义了动物的名称和克隆方法clone。Cat和Dog是具体原型类分别实现了抽象原型类的克隆方法并在构造函数中设置动物的名称。
在客户端代码中首先创建了一个原始的猫对象cat然后通过调用clone方法克隆出一个新的猫对象clonedCat。同样地创建了一个原始的狗对象dog并克隆出一个新的狗对象clonedDog。最后打印出原始动物和克隆动物的名称。
通过使用原型模式可以在不通过构造函数创建对象的情况下复制现有对象来创建新对象。这种方式可以避免重复的初始化操作提高对象的创建效率。同时原型模式也提供了一种动态创建对象的方式允许根据运行时决定复制对象的具体类型。