• 原型-设计模式


    原型设计模式

    原型模式应用场景:创建一个对象比较复杂,当前存在一个和需要创建的对象极其相似,我们就可以采用原型模式,在原来的对象上进行一个修改。
    修改方案:在原来的基础上进行拷贝,在进行部分的修改。(具体采用深拷贝和浅拷贝根据具体的业务场景进行选择)就像我们写一段文本时,前面已经写过一段极其相似的文本,我们可以直接拷贝,然后进行修改。提高了写文本的效率。

    package com.obstar.prototype;
    
    public class MachineStatus {
        public String stable;
    
        public String getStable() {
            return stable;
        }
    
        public MachineStatus(String stable) {
            this.stable = stable;
        }
    
        public void setStable(String stable) {
            this.stable = stable;
        }
    
        @Override
        public String toString() {
            return "MachineStatus{" +
                    "stable='" + stable + '\'' +
                    '}';
        }
    }
    package com.obstar.prototype;
    
    public class Machine implements Cloneable{
        private String model;
        private String speed;
        private String weight;
        private String power;
        private MachineStatus status;
    
        public Machine(String model, String speed, String weight, String power, MachineStatus status) {
            this.model = model;
            this.speed = speed;
            this.weight = weight;
            this.power = power;
            this.status = status;
        }
    
        public MachineStatus getStatus() {
            return status;
        }
    
        public void setStatus(MachineStatus status) {
            this.status = status;
        }
    
        public String getModel() {
            return model;
        }
    
        public void setModel(String model) {
            this.model = model;
        }
    
        public String getSpeed() {
            return speed;
        }
    
        public void setSpeed(String speed) {
            this.speed = speed;
        }
    
        public String getWeight() {
            return weight;
        }
    
        public void setWeight(String weight) {
            this.weight = weight;
        }
    
    
        public String getPower() {
            return power;
        }
    
        public void setPower(String power) {
            this.power = power;
        }
    
        @Override
        public String toString() {
            return "Machine{" +
                    "model='" + model + '\'' +
                    ", speed='" + speed + '\'' +
                    ", weight='" + weight + '\'' +
                    ", power='" + power + '\'' +
                    ", status='" + status + '\'' +
                    '}';
        }
    
        @Override
        protected Object clone() throws CloneNotSupportedException {
            Machine machine = (Machine)super.clone();
            MachineStatus machineStatus = new MachineStatus(this.status.stable);
            machine.setStatus(machineStatus);
            return machine;
        }
    }
    
    • 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
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101

    DEMO:

    public class Demo {
        public static void main(String[] args) throws CloneNotSupportedException {
            Machine machine1 = new Machine("A19", "3600", "1000KG"
                ,"5000W", new MachineStatus("稳定"));
    
            Machine machine2 = (Machine) machine1.clone();
            machine2.setModel("A20");
    
            System.out.println(machine1);
            System.out.println(machine2);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

  • 相关阅读:
    【缺陷检测】基于matlab GUI印刷电路板自动缺陷检测【含Matlab源码 1912期】
    【C标准库】详解feof函数与EOF
    leetcode 128. Longest Consecutive Sequence 最长连续序列(中等)
    (2023,GPT-4V,LLM,LMM,功能和应用)大型多模态模型的黎明:GPT-4V(ision) 的初步探索
    Codeforces Round #877 (Div. 2) A-E
    PCA 在图像分析上的应用
    redisson常用api
    Flutter中Widget的生命周期
    AVR单片机开发11——1602液晶屏幕
    数据结构:lambda表达式
  • 原文地址:https://blog.csdn.net/qq_52763385/article/details/132706762