1
假設我有一個具有一些成員屬性的類A, A也有一個帶有B類對象的向量(std::vector<B>
)。那些B對象需要一些屬性(比如說5)。我看到了兩種處理方法:C++類的設計:在其他類成員中共同使用類成員;小界面vs小班
1)讓B引用這些屬性,並在B的構造函數中賦值它們。
2)讓B只有一個對象的引用,並通過公共getAttributeXYZ()
函數獲取屬性。
我可以看到解決方案1)技術上對A的瞭解較少,因此它更好,因爲它不能調用某個錯誤的函數。但我覺得2)更清晰,因爲構造函數更小,B類本身具有更少的(引用)屬性。有一個更好的方法,還是取決於細節?
上下文:在我的程序中,A的那些成員是可以由所有B對象共享的用於紋理管理,文本繪製等的類。
我不遵循#1對A的瞭解程度的邏輯。如果它直接引用屬性,它仍然依賴於A.事實上,它更是如此,因爲它依賴於* private *實現A的細節,而如果你只是存儲了一個對A的引用並且調用了public accessor函數,那麼A和B之間的依賴關係就會減少。我還會爭辯說,試圖最小化兩個*邏輯上依賴的事物之間的依賴關係是一個練習在愚蠢。使用最清晰的設計,即使它不是理論上最純的設計。 –
「有沒有更好的方法還是取決於細節?」:我們如何知道細節而不知道? :)這就是爲什麼一個好問題應該被合成爲[MCVE](http://stackoverflow.com/help/mcve),而不是一個普遍的問題 – wasthishelpful