Java设计模式-原型模式
来源:互联网 发布:淘宝无线端首页 编辑:程序博客网 时间:2024/06/06 17:05
1:使用场景
1)类初始化需要消耗非常多的资源,包括数据或硬件资源,通过原型拷贝可以避免
2)通过new产生一个对象需要非常繁琐的数据准备过程或权限控制,这时可以使用原型模式
3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要改变其值时,可以考虑使用原型模式拷贝多个对象供调用者使用,即保护性拷贝
2:UML图
3:代码举例:
public class WordDocument implements Cloneable{private String mText;private ArrayList<String> mImages=new ArrayList<String>();public WordDocument(){System.out.println("===WordDocument()");}@Overrideprotected WordDocument clone() {try{WordDocument document=(WordDocument)super.clone();document.mText=this.mText;document.mImages=this.mImages;return document;}catch(Exception e){}return null;}public void setText(String text) {this.mText=text;}public String getText() {return mText;}public void addImage(String img) {this.mImages.add(img);}public ArrayList<String> getImages() {return mImages;}public void showDocument(){System.out.println("===文档开始");System.out.println("===mText: "+mText);System.out.println("===Image List: ");for(String img:mImages){System.out.println("===Image Name "+img);}System.out.println("===文档结束");}}
public class Client {public static void main(String[] args){WordDocument orignDocument=new WordDocument();orignDocument.setText("第一篇文章");orignDocument.addImage("图片1");orignDocument.addImage("图片2");orignDocument.addImage("图片3");orignDocument.showDocument();WordDocument doc2=orignDocument.clone();doc2.showDocument();doc2.setText("这是修改后的doc文本");doc2.showDocument();orignDocument.showDocument();}}
浅拷贝与深拷贝
1:浅拷贝
public static void main(String[] args){WordDocument orignDocument=new WordDocument();orignDocument.setText("第一篇文章");orignDocument.addImage("图片1");orignDocument.addImage("图片2");orignDocument.addImage("图片3");orignDocument.showDocument();WordDocument doc2=orignDocument.clone();doc2.showDocument();doc2.setText("这是修改后的doc文本");doc2.addImage("哈哈");doc2.showDocument();orignDocument.showDocument();}
@Overrideprotected WordDocument clone() { try{ WordDocument document=(WordDocument)super.clone(); document.mText=this.mText; document.mImages=(ArrayList<String>)this.mImages.clone(); return document;}catch(Exception e){}return null;}
4:android中原型模式
public class Intent implements Parcelable, Cloneable
@Override public Object clone() { return new Intent(this); }
阅读全文
0 0
- java 原型设计模式
- Java原型设计模式
- java设计模式(原型模式)
- java设计模式---原型模式
- java设计模式---原型模式
- java设计模式---原型模式
- Java设计模式---原型模式
- JAVA设计模式:原型模式
- java设计模式----原型模式
- JAVA 设计模式 - 原型模式
- 《Java设计模式》 原型模式
- Java设计模式 -- 原型模式
- Java设计模式--原型模式
- Java 设计模式-原型模式
- JAVA设计模式--原型模式
- java设计模式-原型模式
- Java设计模式--原型模式
- java设计模式,原型模式
- MySQL-5.6.31-winx64.zip 手动安装及配置
- cannot reload avd list问题
- C++类静态成员与类静态成员函数
- Java_基础—打印流的概述和特点
- java实现 数组元素全排列
- Java设计模式-原型模式
- Blast2GO-Pro心得
- HDU1686[Oulipo]&&HDU2087[剪花布条] kmp大水题
- Apache 配置文件详情
- 初学Linux
- Android控制蓝牙票据打印
- hashmap和hashset的区别
- Java多线程之生产者-消费者模式
- 【2017/07】实验记录——SSSP