原型模式

来源:互联网 发布:rpg游戏源码 编辑:程序博客网 时间:2024/06/07 00:15

原型模式

  1. 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
  2. 优点:原型模式是在内存二进制流的拷贝,要比直接new一个对象性能好很多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点;逃避构造函数的约束,直接在内存中拷贝,构造函数不会执行。
  3. 浅拷贝:Java做了一个偷懒的拷贝动作,Object类提供的方法clone只是拷贝本对象,原始类型比如int、long、char、String(stringpool机制)等都会被拷贝,其对象内部的数组、引用对象(类的成员变量、一个可变的引用对象)等都不拷贝,还是指向原生对象的内部元素地址,这种拷贝就叫做浅拷贝。
  4. 深拷贝:对象内部的数组、引用对象要独立拷贝。
  5. 注意:要使用clone方法,类的成员变量上不要增加final关键字。

通用模式

1.拷贝对象

public class Thing implements Cloneable {    private String name;    // 定义一个私有变量    private  ArrayList<String> arrayList = new ArrayList<String>();    @Override    public Thing clone() {        Thing thing = null;        try {            thing = (Thing) super.clone();            //增加 arrayList 的拷贝为深拷贝            thing.arrayList = (ArrayList<String>)this.arrayList.clone();        } catch (CloneNotSupportedException e) {            e.printStackTrace();        }        return thing;    }    // 设置添加ArrayList的值    public void setValue(String value) {        this.arrayList.add(value);    }    // 取得arrayList的值    public ArrayList<String> getValue() {        return this.arrayList;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

2.测试类

public class Client {    public static void main(String[] args) {        // 产生一个对象        Thing thing = new Thing();        // 设置一个值        thing.setValue("张三");        thing.setName("张三");        // 拷贝一个对象        Thing cloneThing = thing.clone();        cloneThing.setValue("李四");        cloneThing.setName("李四");        System.out.println(thing.getValue());        System.out.println(cloneThing.getValue());        System.out.println(thing.getName());        System.out.println(cloneThing.getName());    }}

3.运行结果

[张三][张三, 李四]张三李四

注:《设计模式之禅》笔记

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 农门小丑妞 凛子鸢 菊池凛子 朔间凛月 东凛2018年9月作品 东凛2019年作品6月份 东凛2019年作品1月份 园神凛祢 凛祢 绪川凛 我从太古到未来 凛绪 凛遥 凛音桃花手机播放 凛音桃花2018在线播放 凛音桃花作品在线播放 凛音桃花全部作品 凛音桃花在线 凛音桃花作品在线 凛音桃花暴风雨女上司 凛音桃花作品大全 御原凛音 凛音桃花女上司 凛音桐花 凛音桃花2019在线播放 辻洼凛音 凛音桃花暴风雨 凛音桃花作品在线635 凛音桃花中文 凛音桃花上司 juy凛音桃花 凛音桃香 在线 凛音凉子 凛音桃香在线 凝胶 陈雪凝 甲硝唑凝胶 凝陇作品 水凝膜 过氧苯甲酰凝胶 苦参凝胶 贺梓凝霍言深全文免费