• Java设计模式之原型模式


    原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需依赖于显式的构造函数或子类化。原型模式通过克隆(复制)现有对象来创建新对象,从而避免了对象创建的复杂性。

    原型模式通常由以下几个角色组成:

    1. 原型(Prototype):定义了一个克隆自身的方法,通常是通过实现Cloneable接口来实现。

    2. 具体原型(Concrete Prototype):实现原型接口,实现克隆自身的方法。

    3. 客户端(Client):使用原型对象的客户端代码。

    下面是一个简单的示例,演示了如何使用原型模式创建和克隆对象:

    // 原型接口
    interface Prototype extends Cloneable {
        Prototype clone();
    }
    
    // 具体原型类
    class ConcretePrototype implements Prototype {
        private String name;
        
        public ConcretePrototype(String name) {
            this.name = name;
        }
        
        public void setName(String name) {
            this.name = name;
        }
        
        public String getName() {
            return name;
        }
        
        @Override
        public Prototype clone() {
            try {
                return (Prototype) super.clone();
            } catch (CloneNotSupportedException e) {
                return null;
            }
        }
    }
    
    // 客户端代码
    public class PrototypePatternExample {
        public static void main(String[] args) {
            ConcretePrototype prototype = new ConcretePrototype("Prototype 1");
            
            // 克隆对象
            ConcretePrototype clone = (ConcretePrototype) prototype.clone();
            clone.setName("Prototype 2");
            
            System.out.println("Original: " + prototype.getName());
            System.out.println("Clone: " + clone.getName());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    在上面的示例中,我们定义了一个原型接口Prototype,其中包含了一个克隆自身的方法clone()。然后,我们实现了具体原型类ConcretePrototype,它实现了原型接口,并重写了克隆方法,使用Java提供的super.clone()方法进行对象的浅拷贝。在客户端代码中,我们创建了一个具体原型对象prototype,并通过调用其clone()方法来克隆一个新的对象clone。然后,我们修改了克隆对象的名称,并输出原型对象和克隆对象的名称。

    通过使用原型模式,我们可以通过复制现有对象来创建新对象,而无需关心对象的具体实现和构造过程。这种方式可以提高对象的创建效率,尤其在对象的创建过程比较复杂或耗时的情况下。同时,原型模式还可以保护对象的状态,避免对原始对象进行修改。需要注意的是,克隆操作可以是浅拷贝(复制对象的字段引用)或深拷贝(复制对象的字段值),具体取决于实现方式和需求。

  • 相关阅读:
    Linux 配置Java 环境变量
    【Electron】vue+electron应用设置菜单
    .NET 邮件发送 SMTP邮件发送
    2.java数据类型与变量
    模拟建造游戏:城市:天际线Cities: Skylines for Mac/win中文原生版
    【Python】Python 发布订阅模式实现松耦合
    干货 | 携程 SOA 的 Service Mesh 架构落地
    一、高频题集
    react ts实现一个 无限加载组件
    java的左移运算符和右移运算符
  • 原文地址:https://blog.csdn.net/kkwyting/article/details/133670519