zoukankan      html  css  js  c++  java
  • 设计模式02 原型模式

    原型模式(Prototype)定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。

    在Java中,通过实现Cloneable接口中的clone()方法,可以方便的实现原型模式,具体代码如下:

    原型类:

     1 public class Realizetype implements Cloneable {
     2     public int x;
     3     public Object obj;
     4 
     5     Realizetype() {
     6         System.out.println("具体原型创建成功!");
     7     }
     8 
     9     public Realizetype(int x, Object obj) {
    10         this.x = x;
    11         this.obj = obj;
    12     }
    13 
    14     public Object clone() throws CloneNotSupportedException {
    15         System.out.println("具体原型复制成功!");
    16         return (Realizetype) super.clone();
    17     }
    18 }

    调用方式:

     1 public class Client {
     2     public static void main(String[] args) throws CloneNotSupportedException {
     3         Realizetype obj1 = new Realizetype(20, "张三");
     4         Realizetype obj2 = (Realizetype) obj1.clone();
     5         System.out.println("obj1 == obj2?" + (obj1 == obj2));
     6 
     7         System.out.println("obj1.x == obj2.x?" + (obj1.x == obj2.x));
     8 
     9         System.out.println("obj1.obj == obj2.obj?" + (obj1.obj == obj2.obj));//说明是浅拷贝
    10     }
    11 }

    执行结果:

    上面第9行,执行结果是true,说明这种方式复制的对象属于浅拷贝。

  • 相关阅读:
    cefsharp设置默认语言
    C#创建委托实例
    C++/C#互调步骤
    mybatis别名
    redis
    数据库优化方面的事情:
    Properties类使用详解
    七层协议以及如何很好得记忆
    Http 请求到后端过程
    【转】那些年用过的Redis集群架构(含面试解析)
  • 原文地址:https://www.cnblogs.com/asenyang/p/12111018.html
Copyright © 2011-2022 走看看