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