原型模式(笔记)
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){
}
}
}
结果:
浅复制例子
这里采用java自带的Cloneable克隆接口来实现克隆
优点:
简化对象的创建,复制的过程直接在内存中操作二进制流,所以性能比较高
可以允许动态增加或者减少产品类,适合任何的产品等级结构
缺点:
每一个类都配有一个clone方法,而且进行深复制的时候代码量比较多
注意:
单例模式与原型模式是冲突的,原型模式下复制对象不会调用构造方法
原型模式是最后一种创建型模式,它采取复制原型对象的方法来创建对象的实例。
使用原型模式创建的实例都和原型具有同样的初始数据
主要角色:
客户端角色: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方法,而且进行深复制的时候代码量比较多
注意:
单例模式与原型模式是冲突的,原型模式下复制对象不会调用构造方法
相关文章推荐
- C#面向对象设计模式学习笔记(5) - Prototype 原型模式(创建型模式)
- Object对象clone方法总结+原型模式(笔记)
- 设计模式学习笔记九:原型模式(Prototype Pattern)
- [笔记]05Prototype原型模式
- 设计模式笔记之四(原型模式)
- 设计模式学习笔记——原型模式
- [设计模式笔记]一. 创建型模式--5.Prototype模式(原型)(二)
- 咕泡-原型 protype 设计模式笔记
- 设计模式笔记-原型模式
- 4.原型模式(设计模式笔记)
- 步步为营 .NET 设计模式学习笔记 五、Prototype(原型模式)
- 自学与复习设计模式笔记(5)原型模式
- 设计模式学习笔记(六)——Prototype原型模式
- 阿Sam的设计模式学习笔记---- 原型(Prototype)模式
- 设计模式之禅笔记-原型模式
- 设计模式笔记——原型模式
- 设计模式学习笔记九:原型模式(和深浅复制)
- 第九章 简历复印-原型模式(学习笔记)
- 设计模式学习笔记(六)——Prototype原型模式
- Java设计模式笔记之原型模式