java原型模式(clone)之疑惑???
????? 近期在javaeye看到一位兄弟写的java原型模式之理解。然后,自己就写了个demo,但是在使用colone时,好像出现了些问题??
?
定义如下几个类:
?
public class BtripApplication implements Cloneable{
?
?? private int a;
public int getA() {
?return a;
}
public void setA(int a) {
?this.a = a;
}
??
public BtripApplication clone() throws CloneNotSupportedException {
?return (BtripApplication)super.clone();
}
}
------------------------------------------------
?
public class BtripRevision implements Cloneable {
?
? private BtripApplication btripApplication;
?
? public BtripRevision(BtripApplication btripApplication){
?? this.btripApplication =? btripApplication;
? }
?
public BtripApplication getBtripApplication() {
?return btripApplication;
}
public void setBtripApplication(BtripApplication btripApplication) {
?this.btripApplication = btripApplication;
}
public BtripRevision clone() throws CloneNotSupportedException {
?return (BtripRevision)super.clone();
}
}
---------------------------------------------
public class TestBtripApplicationRevision {
? public static void main(String args[]) throws CloneNotSupportedException{
?? BtripApplication b1 = new BtripApplication();
?? b1.setA(1);
?? BtripRevision b2 = new BtripRevision(b1);
?? BtripRevision b3 =? b2.clone();
?? //b3.getBtripApplication().setA(3);
?? b1.setA(3);
?? System.out.println("b2="+b2.getBtripApplication().getA());
?? System.out.println("b3="+b3.getBtripApplication().getA());
?? System.out.println("b2="+b2+"--------b3="+b3);
? }
}
?
输出的结果为:b2=3
??????????????????? b3=3
为什么结果不是b2=1,b3=3呢???