博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【创建型】- 原型模式
阅读量:7239 次
发布时间:2019-06-29

本文共 1178 字,大约阅读时间需要 3 分钟。

hot3.png

原型模式:(对象克隆,每次都是新的对象,单例模式返回唯一对象)


原型实例指定创建对象的种类,并且通过拷贝原型创建新的对象

角色

  • 抽象原型类:定义具有克隆自己的方法的接口
  • 具体原型类:实现克隆方法
  • 客户类:克隆生成一个新的对象

抽象原型类:AbstractPrototype

public abstract class AbstractPrototype{	private String str;	public AbstractPrototype(String str){		this.str=str;	}	public String getStr(){		return str;	}	public void show(){		System.out.println(str);	}	/**	 * 提供克隆自身的方法,实现对象的创建	 * @return	 */	public abstract AbstractPrototype createPrototypeObject();}

具体原型类:ConcretePrototype

public class ConcretePrototype extends AbstractPrototype implements Cloneable{    public ConcretePrototype(String str) {        super(str);    }    /**        * 克隆的具体实现方法:浅度复制(只复制属性,不复制其引用的对象)        */    @Override    public AbstractPrototype createPrototypeObject(){        ConcretePrototype cp = null;        try{            cp =(ConcretePrototype) super.clone(); //Java RTTI机制        }catch (Exception e) {                e.printStackTrace();            }        return cp;    }}

测试代码:

//浅复制:只复制对象内容本身,不涉及到关联对象(元对象和拷贝对象的引用指向同一个对象)AbstractPrototype ap = new ConcretePrototype("Hello");ap.show();AbstractPrototype ap1 = ap.createPrototypeObject();ap1.show();

转载于:https://my.oschina.net/yangzhiwei256/blog/3012149

你可能感兴趣的文章
Solr4:加入中文分词IKAnalyzer2012 FF
查看>>
Java 容器集合框架概览
查看>>
Linux echo命令
查看>>
用C#一步步创建Window Service (转)
查看>>
javascript library
查看>>
Mono 3.0.12 支持可移植类库
查看>>
js操作label,给label赋值,和取label的值
查看>>
MySQL主从复制与读写分离
查看>>
BZOJ 2049: [Sdoi2008]Cave 洞穴勘测 (动态树入门)
查看>>
解决/dev/fb0无法打开的问题
查看>>
勤快的程序猿都没啥前途的,赶紧改掉你的坏毛病吧!
查看>>
OpenCV学习(9) 分水岭算法(3)
查看>>
Android WebView漏洞(转)
查看>>
ExtJS4.2:自定义主题 入门
查看>>
【Android】事件输入系统-代码层次解读
查看>>
js 对文件操作
查看>>
MySQL 5.6学习笔记(数据表基本操作)
查看>>
复制控制---复制构造函数
查看>>
bash把所有屏幕输出重定向到文件并保持屏幕输出的方法
查看>>
HBase 压缩算法设置及修改
查看>>