您的位置:首页 > 编程语言 > Java开发

java设计模式--原型设计模式 Prototype

2012-04-14 16:41 621 查看
所谓的原型即给我们一个对象 我们就可以无限复制出这个对象的副本 ,而不是引用这个对象 。

复制出来的副本 是一个个独立的对象 , 绝不是 原来对象的引用 。

这就要求设计到 java中的对象克隆技术 ,克隆的对象所在的类要实现Cloneable接口 以及覆盖 Object类的 clone()方法 。

我们不能直接调用Object的clone方法 因为 Object类并没有实现 Cloneable接口 如果调用就会抛出 一个 CloneNotSupporteException异常表示不支持 对象克隆 。

下面是一个 原型模式的简单例子:

a=2

a=2

a==b为false

上面是输出的结果可以看出来 ,对象内容一样 但是 却不是同一个对象 。

class Prototype implements Cloneable

{

public String name ;

public Prototype(){}

public Prototype(String name)

{

this.name=name ;

}

@Override

public Object clone() //不能直接调用Object类的clone方法 因为Object类 并没有实现Cloneable接口 所以会抛出不支持的异常 。

{

Object obj=null ;

try {

obj=super.clone() ;

} catch (CloneNotSupportedException e) {

e.printStackTrace();

}

return obj;

}

}

class TypeA extends Prototype

{

private int a ;

TypeA(){}

TypeA(int a){this.a=a ;}

public void show()

{

System.out.println("a="+this.a);

}

}

//我们要做的是给定一个TypeA对象 我们 复制 无数个TypeA出来

public class MyPrototype

{

public static void main(String []args)

{

TypeA a=new TypeA(2) ; //一个原型对象

TypeA b=(TypeA)a.clone() ;

a.show() ;

b.show() ;

System.out.println("a==b为" + (a==b)); //结果是false表示 不是同一个对象 但是对象的属性值完全不同

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: