0
儘管我使用C++進行編程,但這更多的是關於設計的一般問題。以一對一的關聯關係避免樣板代碼
我注意到,當我有一對一的關聯關係中的對象時,它們之間往往存在很多通用方法,從而導致基本上直接調用內部類的方法的樣板代碼。例如,我有一個名爲Tab
的類,它表示一個選項卡,它是相應的小部件。我還有一個名爲Tabbable
的類,對象可以繼承,因此可以在選項卡中顯示它們。 A Tab
然後可以採取此Tabbable
對象並正確呈現本身。例如,這兩個類都有很多與標題或圖標相關的類似方法。
class ITabbable {
public:
ITabbable();
virtual ~ITabbable();
virtual string getTitle() = 0;
virtual widget getContentWidget() = 0;
// etc...
}
class Tab {
public:
Tab(ITabbable* tabbableObject);
// lots of boilerplate code:
string getTitle() {
return m_tabbableObject->getTitle();
}
widget getContentWidget() {
return m_tabbableObject->getContentWidget();
}
// etc...
private:
ITabbable* m_tabbableObject; // association relationship
}
許多代碼是重複的,似乎沒有必要。繼承在此絕對不起作用,因爲您不能將Tab
放入Tab
。我們不得不處理這個問題嗎?或者有辦法解決這些情況?
非常簡單和優雅,謝謝! – 2011-03-10 15:42:04