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;
        }
        
    }
  • 相关阅读:
    mysql系列二、mysql内部执行过程
    mysql系列一、mysql数据库规范
    Centos6.5使用yum安装mysql——快速上手必备
    linux安装tomcat
    linux安装jdk
    tar 解压缩命令
    java并发编程系列四、AQS-AbstractQueuedSynchronizer
    JS数组方法汇总 array数组元素的添加和删除
    如何提升工作效率
    Excel学习笔记
  • 原文地址:https://www.cnblogs.com/littlepage/p/10068854.html
Copyright © 2011-2022 走看看