设计模式7——Prototype设计模式

Prototype原型设计模式是指用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。Prototype原型模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何关于对象创建的细节。

原型模式的UML图如下:


Prototype模式例子如下:

//抽象原型类	
abstract class Shape implements Colneable{
	String shapeName;
	public String getShapeName(){
	retun shapeName;
}
public void setShapeName(String shapeName){
     this.shapeName = shapeName;	
}
//实现了Colneable接口的类,可以使用clone()方法复制对象
public Object clone(){
	try{
	return super.clone();
}catch(CloneNotSupportedException e){
	System.err.println(“此对象不支持复制”);
}
return null;
}
}
//具体原型类
publc class Circle extends Shape{
	public Circle(){
	setShapeName(“Circle shape”);
}
public static void main(String[] args){
	Shape shape = new Circle();
	System.out.println(shape.getShapeName()); 
	//通过clone()方法获得一个对象拷贝
	Shape shape2 = (Shape)shape.clone();
	System.out.println(shape2.getShapeName());
}
}

clone()方法是在Object中定义的,而且是protected的,只有实现了Cloneable接口的类才可以在其实例上调用clone()方法,否则会抛出CloneNotSupportException。

为了获取对象的一份拷贝,我们可以利用Object类的clone()方法,也可以实现Cloneable接口,覆盖基类的clone()方法,在clone()方法中,调用super.clone()。

Cloneable接口是一个标记接口,也就是没有任何内容,定义如下:

package java.lang;
pubilc interface Cloneable{
}

更多有关java拷贝方面的内容请参考http://blog.csdn.net/chjttony/article/details/7477346

克隆只是实现Prototype原型模式的一种方法,也可以直接通过new对象的方式创建原型实例,二者区别在于:

(1).通过new方式创建的原型和现存的实例对象没有任何联系。

(2).通过克隆方法创建的原型,虽然也是创建新对象,但是将原型实例对象的数据复制到了新的对象中,相当于使用被克隆对象的数据作为克隆对象的初始数据。

Prototype原型设计模式和Singleton单类设计模式是相对的,单类模式中,在整个程序生命周期里,单类模式类的实例对象只有一个。而Prototype原型设计模式则正好相反,每次都返回的是原型类的不同实例对象。

JDK中原型模式的应用:

java.lang.Object#clone()

java.lang.Cloneable

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值