• Java原型模式


    原型模式

      原型模式也称克隆模式。原型模式jian ming zhi yi,就是先创造出一个原型,然后通过类似于Java中的clone方法,对对象的拷贝,克隆类似于new,但是不同于new。new创造出来的对象采用的是默认值。克隆出来的对象与原型对象相同,同时不会影响原型对象,然后在修改克隆出来的对象。

    实现

      继承Cloneable接口,重写clone方法。(此处的clone方法不是接口Cloneable中的抽象方法,而是obj中的方法)

    应用场景

      例:js中继承就是prototype就是采用原型模式。创建一个对象比较耗时时,采用原型模式。

    Demo

      

    public class Sheep implements Cloneable{
      private String name;
      private Date brithday;
      public String getName() {
        return name;
      }
      public void setName(String name) {
        this.name = name;
      }
      public Date getBrithday() {
        return brithday;
      }
      public void setBrithday(Date brithday) {
        this.brithday = brithday;
      }
      public Sheep() {
      }

      public Sheep(String name, Date brithday) {
        super();
        this.name = name;
        this.brithday = brithday;
      }

      @Override
      public String toString() {
        return "Sheep [name=" + name + ", brithday=" + brithday + "]";
      }
      @Override
      protected Object clone() throws CloneNotSupportedException {

      //此处的克隆只是简单的clone,原型模式中的对象中属性所引用的对象一旦修改,clone出来的对象的值也会随之改变,此处为浅复制
        Object obj = super.clone();
        return obj;
      }
    }

    public class Client {

      public static void main(String[] args) throws CloneNotSupportedException {
        Sheep s1 = new Sheep("多里",new Date());
        System.out.println(s1);
        Sheep s2 = (Sheep) s1.clone();
        System.out.println(s2);
      }
    }

      @Override
      protected Object clone() throws CloneNotSupportedException {

    //在复制的时候,同时对属性进行复制,通过此方式来进行深复制。
        Object obj = super.clone();
        Sheep s = (Sheep)obj;
        s.brithday = (Date) this.brithday.clone();
        return obj;
      }

  • 相关阅读:
    推荐系统入门笔记2--信息检索 Lucene
    Mybatis多个参数,其中有hashMap的写法
    Java中fastjson的toJSONString结果为空{}
    Linux中less命令出现ESC乱码
    关于博客
    【Uni-App】关于获取手机系统信息的项目实践
    mysql 服务列表找不到
    服务网格与Istio
    ARM架构服务器如何运行EasyNVR软件提示无法识别二进制文件排查及解决
    关于EasyNVR拉流摄像头的视频流存在视频流锁定机制的问题说明
  • 原文地址:https://www.cnblogs.com/zl96291/p/10125883.html
Copyright © 2020-2023  润新知