您的位置:首页 > 其它

原型模式(笔记)

2014-02-10 10:16 113 查看
定义

原型模式是最后一种创建型模式,它采取复制原型对象的方法来创建对象的实例。

使用原型模式创建的实例都和原型具有同样的初始数据

主要角色:

客户端角色:Client提出创建对象的请求

抽象原型对象:Prototype 通常由一个抽象类或者一个接口来实现,定义一些接口规范

具体原型对象:被复制的具体对象,实现里抽象原型对象的接口方法

UML:



复制拷贝可分为深复制和浅复制

浅复制主要是复制基本数据类型和string

深复制主要是复制引用数据类型

// 抽象原型对象
package com.pattern.prototype;
public ConcreatePrototype impements Cloneable {
private String tips = null;

public void setTips(String tips){
this.tips = tips;
}
public String getTips(String tips){
return this.tips;
}
public ConcretePrototype clone(){
try{
return (ConcreatePrototype)super.clone();
}catch(CloneNotSupportedException ex){
}
}

}
// 客户端测试类
package com.pattern.prototype;
public class Client{
public static void main(String []args){
ConcreatePrototype cp = new ConcreatePrototype();
cp.setTips("浅复制例子");
ConcretePrototype cp2 = cp.clone();
System.out.println(cp2.getTips());
}

}


结果:

浅复制例子

这里采用java自带的Cloneable克隆接口来实现克隆

优点:

  简化对象的创建,复制的过程直接在内存中操作二进制流,所以性能比较高

 可以允许动态增加或者减少产品类,适合任何的产品等级结构

缺点:

每一个类都配有一个clone方法,而且进行深复制的时候代码量比较多

注意:

 

单例模式与原型模式是冲突的,原型模式下复制对象不会调用构造方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: