• java设计模式-原型(prototype)


    有时候创建对象是需要耗费很多资源,但是每个对象之间又有大量的重复。我们可以选择在创建好一个对象后,以之作为模板克隆出其他对象,稍作修改,即可用于其他地方。

     需要实现Cloneable接口,重写clone()方法。其实就是调用的Object类的clone()方法。

    克隆对象只是复制了原对象的数据,每个对象还是独立的,他们的内存地址不同。

    /**
     * Created by wangbin10 on 2018/5/18.
     */
    public class Prototype2 implements Cloneable,Serializable {
        private static final long serialVersionUID = 2L;
        private String name;
        private Integer payAmount;
        private String msg;
    
        public Prototype2() {
        }
    
        public Prototype2(String name, Integer payAmount, String msg) {
            this.name = name;
            this.payAmount = payAmount;
            this.msg = msg;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getPayAmount() {
            return payAmount;
        }
    
        public void setPayAmount(Integer payAmount) {
            this.payAmount = payAmount;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public Prototype2 clone() throws CloneNotSupportedException {
            Prototype2 clone = (Prototype2) super.clone();
            return clone;
        }
    }
    /**
     * Created by wangbin10 on 2018/5/18.
     */
    public class PTest {
        public static void main(String[] args) throws CloneNotSupportedException {
            Prototype2 p1=new Prototype2("zhangsan",23,"hello!welcome to beijing!");
            System.out.println(p1.getName()+p1.getPayAmount()+p1.getMsg());
            Prototype2 p2 = p1.clone();
            p2.setName("lisi");
            p2.setPayAmount(24);
            System.out.println(p2.getName()+p2.getPayAmount()+p2.getMsg());
            System.out.println("============================");
            System.out.println(p1.getName()+p1.getPayAmount()+p1.getMsg());
    
        }
    }
  • 相关阅读:
    Centos7下rc.local文件开机不执行…
    Centos7添加密码安全策略
    Java8 时间日期类操作
    XML配置spring session jdbc实现session共享
    Spring Boot 2.x以后static下面的静态资源被拦截
    外观模式
    组合设计模式
    Java线程池源码解析
    观察者模式
    Java使用POI解析Excel表格
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/9056130.html
Copyright © 2020-2023  润新知