1700461759
设计模式之禅 13.4 原型模式的注意事项
1700461760
1700461761
原型模式虽然很简单,但是在Java中使用原型模式也就是clone方法还是有一些注意事项的,我们通过几个例子逐个解说。
1700461762
1700461763
13.4.1 构造函数不会被执行
1700461764
1700461765
一个实现了Cloneable并重写了clone方法的类A,有一个无参构造或有参构造B,通过new关键字产生了一个对象S,再然后通过S.clone()方式产生了一个新的对象T,那么在对象拷贝时构造函数B是不会被执行的。我们来写一小段程序来说明这个问题,如代码清单13-8所示。
1700461766
1700461767
代码清单13-8 简单的可拷贝对象
1700461768
1700461769
public class Thing implements Cloneable{
1700461770
1700461771
public Thing(){
1700461772
1700461773
System.out.println(“构造函数被执行了……”);
1700461774
1700461775
}
1700461776
1700461777
@Override
1700461778
1700461779
public Thing clone(){
1700461780
1700461781
Thing thing=null;
1700461782
1700461783
try{
1700461784
1700461785
thing=(Thing)super.clone();
1700461786
1700461787
}catch(CloneNotSupportedException e){
1700461788
1700461789
e.printStackTrace();
1700461790
1700461791
}
1700461792
1700461793
return thing;
1700461794
1700461795
}
1700461796
1700461797
}
1700461798
1700461799
然后我们再来写一个Client类,进行对象的拷贝,如代码清单13-9所示。
1700461800
1700461801
代码清单13-9 简单的场景类
1700461802
1700461803
public class Client{
1700461804
1700461805
public static void main(String[]args){
1700461806
1700461807
//产生一个对象
[
上一页 ]
[ :1.700461758e+09 ]
[
下一页 ]