我在這裏有兩個困境:我有幾個類,讓我們說A,B,C和D. A有一個公共接口,和B有一個關係(就像A有一個類型爲B的成員變量),並且A的方法之一是返回這個B對象,B只是一個暴露某些方法的類,C是另一個暴露其他方法的類,而D是一個單例對象。 D的公共接口具有對C類對象的引用(指針,如果你更喜歡的話)。C++的一些設計問題
所以,當我想在這一步繪製關係圖時,我會在A和B和C之間有一個關係會放在圖上,與其他兩個沒有明顯的關係。所以,這是基於頭文件(.h),其中包含類A,B,C的聲明。我現在對D有點困惑。
在另一端:
- A和B兩者的實現(在cpp文件)嚴重依賴於從C類創建的對象(無,C是不是標準,如表,字符串,隊列,但在我的應用程序中另一個有意義的類)。
- A和B的實現都使用D單例與本地C對象。
這裏是我的問題:
- 我應該把A,B,C和d之間的類圖上什麼關係,還不算我已經確定了一個(A HAS-A B) ?我對單身D與C類的關係特別感興趣。
- 什麼是這種情況下普遍接受的方法(當接口沒有對象之間的關係時,因爲沒有關係,但是在實現中它們是大量使用)?
- 如果我按照Java而不是C++有相同的問題會有區別(因爲在java中與類有關的所有東西都在一個文件中,所以很容易看出類方法實際使用的是什麼,而在C++中你通常只看到頭文件)。
非常感謝您的指導。
爲什麼單身? – 2011-04-14 13:03:27
如果你還沒有在頭兩段中描述你所描述的內容。然後當你有這個問題時,將它添加到你的問題中,這將有助於我們理解這些關係,即使該圖不完整。重要的是要先畫出你所知道的。 – nathan 2011-04-14 13:05:15
由於嘗試將單例裝入其他易於管理的設計而引起混淆。無所事事,萬事俱備,他們在一張關係圖上跺腳,把它縮小成意大利麪條。大約99%的時間應該避免使用全局對象;當你確實需要一個,幾乎肯定不應該是一個單身人士,除非你有一些非常離奇的要求。 – 2011-04-14 13:10:41