저는 C++로 프로그래밍하고 있지만 디자인에 대한 일반적인 질문입니다.일대일 연결 관계에서 상용구 코드 피하기
개체가 일대일 연결 관계에있을 때, 그 사이에 많은 일반적인 메서드가있는 경향이있어 본질적으로 내부 클래스의 메서드를 직접 호출하는 상용구 코드로 이어지는 경향이 있습니다.
예를 들어, 나는 탭을 나타내는 Tab
이라는 클래스와 해당 위젯을 가지고 있습니다. 객체가 상속받을 수있는 Tabbable
클래스가 있으므로 탭에 표시 할 수 있습니다. 그런 다음 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
에 넣을 수 없으므로 상속을 확실히 사용할 수 없습니다.
이것은 우리가 처리해야 할 대상입니까? 아니면 이러한 상황을 해결할 수있는 방법이 있습니까?
매우 간단하고 우아한 덕분입니다! –