4
我的情況當兩個類(姑且稱之爲一個和乙)是相互關聯的(他們的方法依賴於另一個的數據),但IS-A關係是不恰當的。我可以使用組合,以便兩個對象都具有存儲其他對象的字段。但是這對我來說似乎很難看。我目前做的是通過組合物從甲和乙創建另一個類Ç包含的對象,並且當我想調用類A的方法,我通過對象乙。我的這種方法的問題:對象是相互需要對方
- 我需要一個對象傳遞給其他所以它開始像一個簡單的函數參數,而不是通過面向對象的方法,其中的對象封裝的數據
- 如果我需要改變東西,我可能要修改這兩個類一個和乙,這是不是你有什麼推薦一個好點的代碼重用
的代碼?
例
class Mesh:
method: plot(this, Solver)
{
plot data from class Solver // need to pass a Solver object, so the class is not self-contained
}
method: intersect(this, Domain)
{
do sth // depends on Domain, so we need to pass it
}
class Domain:
method: plot(this)
{
plot data from own data // no problem
}
method: selectVertex(this, Mesh)
{
do sth // depends on Mesh, so we need to pass it
}
謝謝 佐爾坦
通常這不是一個好主意,讓兩個對象相互依賴。但是,如果沒有你提供一些具體的信息/代碼,很難再說更多。 –
相互組合不是一個好主意,而是一個線索,說明你的類是如此相關,也許它們必須只是一個具有A和B屬性的類。但是,沒有具體的代碼是很困難的。 –
是的,它們是相關的,但是如果它們是一個類,那麼我會有將幾乎所有東西放到一個類中的誘惑,這在OOP中不是很有利。 –