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

所谓的原型即给我们一个对象 我们就可以无限复制出这个对象的副本 ,而不是引用这个对象 。

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

这就要求设计到 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表示 不是同一个对象 但是对象的属性值完全不同
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值