设计模式--原型模式
来源:互联网 发布:一战沙俄 知乎 编辑:程序博客网 时间:2024/06/07 02:07
部分代码转载自:http://blog.csdn.net/sadfishsc/article/details/7998161
原型模式,把开销较大的初始化操作换成开销较小的克隆操作。
关于 克隆:复制成员变量咯
关于引用类成员变量的克隆:a对象的User user是个引用,a1克隆自a,那么a的user和b的user都指向同一个User对象,那么也就是说,
b.setUser();对user这个引用修改,那么a里的user也会同时修改
那么上面的就是一个bug,不合逻辑。要修复这个bug,使用深度克隆
clone()方法是objet的一个方法,浅克隆可以直接调用任何对象的clone方法
重写Object类的克隆方法
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
深度克隆的重写:
- public Test clone() {
- Test cloned = null;
- try {
- cloned = (Test)super.clone();
- cloned.c = new Counter();
- cloned.c.set(c.get());
- } catch (CloneNotSupportedException e) {
- e.printStackTrace();
- }
- return cloned;
- }
0 0
- 设计模式:原型模式
- 设计模式------原型模式
- 设计模式 原型模式
- 设计模式-【原型模式】
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式- 原型模式
- 设计模式:原型模式
- 设计模式 - 原型模式
- 设计模式-原型模式
- 【设计模式】原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 【设计模式】原型模式
- 设计模式----原型模式
- 设计模式------原型模式
- MySQL存储过程中的3种循环
- Matlab和C++混合编程
- POJ 1679 The Unique MST
- DataTable跳转到指定页
- 帝国cms会员查看权限设置方法
- 设计模式--原型模式
- 如何启动、关闭和设置ubuntu防火墙
- 【牛腩新闻发布系统】-HTTP错误 403.14 –Forbidden Web服务器被配置为不列出此目录的内容
- EXT4 form 表单内控件输入无效时不出现提示的原因
- scp命令的用法详解
- 语音提示
- labview实现字符串转16进制
- Flash SWF 包含一个声音项目的多个副本的解决办法
- solr和hbase结合进行索引搜索