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

    //深浅复制

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutput;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;

    public class Demo {
         public static void main(String[] args) {
             ShadowCopy shadowCopy = new ShadowCopy(1,"macro");
             shadowCopy.copy();//底层看不见,但是谁调用复制谁!!
            
             ShadowCopy shadowCopy2 = new ShadowCopy(2,"macro222");
             shadowCopy2.deepCopy();//底层看不见,但是谁调用复制谁!!
         }
    }

    class ShadowCopy implements Cloneable,Serializable{
        
         /**
          *
          */
         private static final long serialVersionUID = -6418640167884569655L;
         private int numb;
         private String name;
         public ShadowCopy(int numb,String name) {
             // TODO Auto-generated constructor stub
             this.numb = numb;
             this.name = name;
         }
         void copy() {
             try {
                 ShadowCopy shadowCopy2 = (ShadowCopy) super.clone();
                 System.out.println(shadowCopy2.name+":"+shadowCopy2.numb);
             } catch (CloneNotSupportedException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
         }
        
         void deepCopy() {
             ByteArrayOutputStream bos = new ByteArrayOutputStream();
             try {
                 ObjectOutputStream outputStream = new ObjectOutputStream(bos);
                 outputStream.writeObject(this);
             } catch (IOException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
            
             ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
             try {
                 ObjectInputStream ois = new ObjectInputStream(bis);
                 ShadowCopy shadowCopy = (ShadowCopy) ois.readObject();
                 System.out.println(shadowCopy.name+":"+shadowCopy.numb);
             } catch (IOException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             } catch (ClassNotFoundException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
            
         }
    }

  • 相关阅读:
    6_10 下落的树叶(UVa699)<二叉树的DFS>
    6_9 天平(UVa839)<二叉树的DFS>
    6_8 树(UVa548)<从中序和后序恢复二叉树>
    6_7 树的层次遍历(UVa122)<二叉树的动态创建与BFS>
    6_6 小球下落(UVa679)<完全二叉树编号>
    6_4 破损的键盘(UVa11988)<链表>
    6_3 矩阵链乘(UVa424)<用栈实现简单的表达式解析>
    6_2 铁轨(UVa514)<栈>
    第五周课程总结&试验报告(三)
    第四周课程总结和实验报告
  • 原文地址:https://www.cnblogs.com/macro-renzhansheng/p/12568506.html
Copyright © 2011-2022 走看看