打字猴:1.700461758e+09
1700461758 设计模式之禅 [:1700453971]
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 ]  [ 下一页 ]