2015-04-02 46 views
0

我有一個構圖關係如下。 SubClass使用MainClass的方法。所以它需要MainClass的參考。這樣做,​​與MainClass緊密聯繫在一起。這樣做是可取的嗎?有沒有一種方法/設計模式來打破交叉依賴?構圖關係

Public Class MainClass { 

    private SubClass subClass; 

    public MainClass(){ 

     subClass=new SubClass(this); 

    } 

    public doTCPCall(){ 
     .... 
    } 


} 


Public Class SubClass { 

    private MainClass mainClass; 

    public SubClass(MainClass mainClass){ 

     this.mainClass=mainClass; 

    } 

    public doTCPCall(){ 
     mainClass.doTCPCall(); 
    } 
} 
+2

如果沒有更多細節,很難說出任何內容。嘗試擴展示例代碼。來自'MainClass'的方法在哪裏調用,爲什麼'SubClass'需要它?子類是否需要綁定到'MainClass'的特定實例,或者任何實例都會執行? – 2015-04-02 23:59:56

+0

我更新了帖子。 'SubClass'從'MainClass'調用'doTCPCall'。它不一定與'MainClass'的特定實例綁定。 – Ozgen 2015-04-03 00:07:10

回答

1

如果MainClass.doTCPcall()不依賴於任何特定的MainClass實例信息的方法來運行,它可以作出static。這樣,​​將不需要存儲MainClass的實例。它可以調用靜態方法:

public void doTCPCall() { 
    // Call the doTCPCall() using the class name instead of an instance 
    MainClass.doTCPCall(); 
}