设计模式——原型模式
来源:互联网 发布:360连接助理软件 编辑:程序博客网 时间:2024/06/05 21:15
原型模式:通过复制现有实例来创建新的实例,无须知道相应类的信息
优点:
使用原型模式创建对象比直接new一个对象更有效
隐藏制造新实例的复杂性
重复地创建相似对象时可以考虑使用原型模式
缺点:
每一个类必须配备一个克隆方法
深层复制比较复杂
注意事项:
使用原型模式复制对象不会调用类的构造方法。所以,单例模式与原型模式是冲突的,在使用时要特别注意。final也不可以。
Object类的clone方法只会拷贝对象中的基本的数据类型,对于数组、容器对象、引用对象等都不会拷贝,这就是浅拷贝。如果要实现深拷贝,必须将原型模式中的数组、容器对象、引用对象等另行拷贝。
适用场合:
复制对象的结构与数据
希望对目标对象的修改不影响既有的原型对象
创建对象成本较大的情况下
@Override public Mail clone() { Mail mail = null; try { mail = (Mail) super.clone(); //深层拷贝 mail.ars = (ArrayList<String>)this.ars.clone(); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return mail; }
应用:
Mail mail = new Mail(et); while (i < MAX_COUNT) { Mail cloneMail = mail.clone(); cloneMail.setContent(getRandString(5) + "..." + mail.getTail()); cloneMail.setReceiver(getRandString(5) + "@" + getRandString(8) + ".com"); sendMail(cloneMail); i++; }
0 0
- 设计模式—原型模式
- 设计模式—原型模式
- 设计模式—原型模式
- 设计模式—原型模式
- 设计模式——原型设计模式
- 设计模式——原型设计模式
- 浅谈设计模式——原型模式
- 设计模式——原型模式(Prototype)
- 原型模式——设计模式系列
- 设计模式——原型模式
- 设计模式——原型模式
- java设计模式——原型模式
- 原型模式——设计模式系列
- 【大话设计模式】—— 原型模式
- C++设计模式——原型模式
- 设计模式5——原型模式
- 设计模式——原型模式
- Python设计模式——原型模式
- Makefile 中的 $@, $^, $< , $? 符号
- Android中line-height不居中的解决办法
- Jackson(一)Streaming API
- IQueryFilter.whereclause屬性
- 三层架构多条件查询
- 设计模式——原型模式
- go语言web框架 beego初步使用笔记
- 常用正则表达式
- 代理模式
- AE刷新ReFresh
- 移动开发大作业————随手记(数据库和保存到SD卡操作)
- ubuntu server u盘制作方法
- tar 命令详解
- COM编程精彩实例--COM通信