從編碼風格的角度看,循環類依賴性是否不好?從編碼風格的角度看,循環類依賴性是否不好?
實施例:
在我們有兩個類,關於單個數據庫(DBInfo
)和一類能夠創建數據庫連接一個封裝信息的數據庫應用程序。 (ConnFactory
)
DBInfo
有一個getConnection
方法,它使用ConnFactory
創建連接。但ConnFactory
本身需要一個DBInfo
的對象來這樣做。
像這樣:(忽略了可讀性的原因任何編碼風格)
class DBInfo {
String name;
String connectionUrl;
Connection getConnection() {
return ConnFactory.getConnection(this);
}
}
class ConnFactory {
Connection getConnection(DBInfo toWhat) {
return new Connection(toWhat.connectionUrl);
}
}
我的同事認爲,這是不好的做法,如果有依賴和只有一個方向是倒不如不圓形的像這樣。
這是不好的做法,反模式還是代碼味道?有什麼缺點嗎?
我同意,但是有某種父母,子女關係並不是不自然的,其中連接引用了創建它的DBInfo並且DBInfo緩存/管理連接列表創建。 這就是說,在這個例子中,如果它只是我們需要從DBInfo得到的字符串,我只會將其作爲參數傳遞。正如你已經從示例代碼中所說的那樣,它不太清楚爲什麼它們需要相互引用,這使得很難提出正確的重構。 – Cohen 2010-01-07 10:38:22