데이터베이스에서 검색 한 엄청난 양의 다른 종류의 객체를 다루는 프로젝트를 진행하고 있습니다. 추가 고려 사항에 대해서는 let's은 (단순 액세스 수정과 등이 omited 있습니다) 다음과 같이 우리가 훨씬 단순한 구조를 가지고 가정 : 중첩 된 구조의 디자인 문제
class Outer {
Mid mid;
string someString;
void createMid(string str) {
// some work
this.mid = new Mid(str);
}
}
class Mid {
Inner inner;
string someOtherString;
}
class Inner {
string innerString;
}
class Inner2 : Inner {
// some custom behaviour for innerString
}
이제 우리는 또한 중첩 된 객체를 인스턴스화
Outer
의 인스턴스를 만듭니다. 이제
Inner
-class 내에서 어떤 동작을 하위 클래스로 변경하려고합니다 (
innerString
속성을 기본 구현과 다른 값으로 설정한다고 가정 해 봅시다). 이에 대한 현재의 접근 방식은 서브 클래스
Inner
입니다. 이 파생 클래스의 인스턴스를 만들려면
Mid
하위 클래스를 추가해야하므로
Outer
하위 클래스도 만듭니다. 이 중첩 된 구조를 생성하는 과정은
Outer
개체의 많은 작업으로 구성되지만
Inner2
-instance와
Mid
의 인스턴스도 인스턴스화하기 위해 대부분의 코드를 재정의해야합니다.
거대한 디자인 결함처럼 들리지만 전체 구조를 서브 클래 싱하고이 상대적으로 작은 하위 오브젝트에 대해 전체 createMid
- 방법을 오버라이드하는 것보다이 유형의 디자인에 대해 다른 해결책을 찾지는 않았습니다. Inner
의 서브 클래 싱을위한 다른 접근 방법이 있습니까? 공장 패턴의
종속성 주입을 사용하면 모든 것을 상속 할 필요가 없습니다. 더 파생 된'Inner'를'Mid'에 대한 의존성으로 전달하면됩니다. –