设计模式-原型模式
2015-10-27 11:36
337 查看
1.定义
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2.UML
3.代码
public class PrototypeClass implements Cloneable { public ArrayList<String> mList = new ArrayList<String>(); public PrototypeClass() { System.out.println("clone对象不会执行构造函数"); } @Override protected PrototypeClass clone() { PrototypeClass obj = null; try { obj = (PrototypeClass) super.clone(); obj.mList = (ArrayList<String>) mList.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return obj; } }
public class Client { public static void main(String[] args) { PrototypeClass prototypeObject = new PrototypeClass(); prototypeObject.mList.add("张三"); PrototypeClass newPrototypeObject = prototypeObject.clone(); newPrototypeObject.mList.add("李四"); } }
4.注意事项
clone方法是直接拷贝内存二进制流,比new性能好很多1.clone对象的构造函数不会执行;
2.浅拷贝:只拷贝本对象,对象的成员变量引用、数组还是指向原对象的内存地址
3.深拷贝:重写clone方法,clone成员变量引用
相关文章推荐
- 实现 发送验证码的倒计时功能
- 1027 test
- 洛谷2055 [ZJOI2009]假期的宿舍(二分图)
- ubuntu语言支持不见了?
- [C++] Template Function _ Any number of parameters
- mysqldump导出--数据+结构+(函数+存储过程)
- 数据仓库专题(15)-数据仓库建设基本原则-实践篇(求补充)
- Android线程间通信机制——深入理解 Looper、Handler、Message
- eclipse 离线安装 SVN
- windows
- 大数据测试之hadoop命令大全
- NSURLSessionDownloadTask 断点下载
- Toolbar,DrawerLayout,PagerSlidingTabStrip,AndroidImageSlider,RecyclerView结合使用
- 【读书笔记】程序员的自我修养总结(四)
- swift 初级 函数
- [Gearman] centos上Gearman的安装
- 手机网页怎么禁止缩放
- mybatis配置
- IOS 调用WebService(同步和异步)
- 老李分享:持续集成学好jenkins之内置命令