zoukankan      html  css  js  c++  java
  • 设计模式(六)Prototype Pattern 原型模式

    通过new产生一个对象非常繁琐,可以使用原型模式

    原型模式实现:

    ——Cloneable接口和clone方法

    ——Prototype模式实现起来最困难的地方是实现内存的复制和操作,Java中提供了clone方法省了大部分事情

    案例:多利羊的克隆

    package com.littlepage.PrototypePattern;
    
    public class Sheep implements Cloneable{
        String name;
        int date;
        public Sheep(String name, int date) {
            super();
            this.name = name;
            this.date = date;
        }
        @Override
        protected Object clone() throws CloneNotSupportedException {
            Object obj=super.clone();
            return obj;
        }
        
    }

    1.继承Cloneable接口

    2.重写clone方法

    测试,不同只羊,相同属性

    浅克隆

    package com.littlepage.PrototypePattern;
    
    public class Test {
        public static void main(String[] args) throws CloneNotSupportedException {
            Sheep s=new Sheep("molly",2019);
            Sheep ss=(Sheep)s.clone();
            System.out.println(s);
            System.out.println(ss);
        }
    }

    浅拷贝和深拷贝

    浅拷贝,只拷贝一层,不会把对象中引用的对象进行拷贝

    深拷贝,拷贝深层

    初学java的时候应该学过,这里不提太多

    深克隆

    package com.littlepage.PrototypePattern;
    
    import java.util.Date;
    
    public class Sheep implements Cloneable{
        String name;
        Date date;
        public Sheep(String name, Date date) {
            super();
            this.name = name;
            this.date = date;
        }
        @Override
        protected Object clone() throws CloneNotSupportedException {
            Object obj=super.clone();
            Sheep s=(Sheep)obj;
            s.date=(Date)this.date.clone();
            return obj;
        }
        
    }
  • 相关阅读:
    angularJS 数组更新时重新排序之解决方案一:这个坑,绕开吧,不跳了……
    移动web开发之rem响应式设计
    IIS wAS机制
    触摸方法
    滑动加载函数
    js有关数组的函数
    用absolute进行页面的自适应布局
    absolute
    清除float的方法
    图片和文字的位置垂直居中和左右摆放
  • 原文地址:https://www.cnblogs.com/littlepage/p/10068854.html
Copyright © 2011-2022 走看看