原型模式

原型模式就是通过clone来实现生成新对象的方法。
好处就是可以减少构造函数的重新生成,而且可以复制另外一个类的方案
下面用代码说明下
1、CAT

public class Cat implements Cloneable {

public int legs;

public Name name;

public int getLegs() {
return legs;
}

public void setLegs(int legs) {
this.legs = legs;
}

@Override
public Cat clone() throws CloneNotSupportedException {
return (Cat) super.clone();
}

public Name getName() {
return name;
}

public void setName(Name name) {
this.name = name;
}

}


有Name类是更好的体现clone这个一个方法
2、Name类

public class Name implements Cloneable {

private String name;

private String alie;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAlie() {
return alie;
}

public void setAlie(String alie) {
this.alie = alie;
}

}



3、Main

public class Main {
public static void main(String[] args) throws Exception {
Cat cat = new Cat();
Name name = new Name();
name.setName("cat");
cat.setLegs(4);
cat.setName(name);
Cat cloneCat = cat.clone();
System.out.println(cloneCat.getName().getName());
cat.getName().setName("dog");
cat.setLegs(3);
System.out.println(cat.getName().getName());
System.out.println(cat.getLegs());
System.out.println(cloneCat.getName().getName());
System.out.println(cloneCat.getLegs());
}
}



上面就可以清楚的看到
我们先克隆了一只猫,然后查看克隆猫的名字,第1次是正确的。
我们改变原始的猫的状态在查看。发现克隆猫的名字变成dog,但是legs正常。这就可以看出这次clone只克隆猫的简单的对象(int,char,String...之类的),但是复杂对象只clone出引用地址,如果原始类改变我们的克隆类也会变化。所以这个被称为浅克隆。
深克隆必须对所有的引用对象进行一级级的克隆,这样原型模式很复杂。
所以这是一个比较大的缺点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值