현재 여러 번 메서드를 구현해야하는지 또는 공통점이없는 개체에 인터페이스를 추가해야하는지 디자인을 결정하려고합니다.코드 중복 대 여러 인터페이스 추가
내 프로그램은 다음과 같이 구성되어있다 :
BaseObject (이름, 설명, ...) < - DocumentedObject (프로토콜, 설명서, ...) < - RealObject (만료, 위치, ...)
이들은 추상적 인 클래스입니다. 각각은 여러 아이를 가지고 예컨대 :
BaseObject :
- 고객
- 출하
DocumentedObject :
- MyDocumentedObject
RealObject :
- 제품
이 목록은 현실에서 우리는 ~ 20 개 클래스에 대해 얘기 만 예입니다.
응용 프로그램 자체의 아키텍처는 서비스 계층 (ProductService, CustomerService, ...) 위에 MVVM (ProductViewModel, CustomerViewModel, ...)입니다. obects가 많은 특성을 공유하기 때문에 계층 구조가 잘 작동합니다. 그러나 속성 외에도 일부는 컬렉션을 공유하지만 계층 구조와 일치하지 않습니다. 예 : 고객 및 제품에는 문서 목록이 있지만 MyDocumentedObject에는 없습니다.
나는 이러한 컬렉션을 관리하기위한 세 가지 옵션을 참조하십시오 (? 모두에서, 서비스에, 뷰 모델에)
- 이 문서가 클래스에 인터페이스 "IHasDocuments"를 사용합니다.이 인터페이스는 컬렉션 문서
- 마다
- 하나 개의 문서 관리 방법을 구현하고 개체가 통과되어있다 유형을 확인 여분의 객체에 대한 (이 최악의 솔루션입니다 내 생각) 문서 관리 방법을 구현
현재는 다음과 같습니다
BaseObject :
- 고객 : IHasDocuments
- 출하
DocumentedObject :
- MyDocumentedObject : IHasItems
RealObject :
- 제품 : IHasDocuments,
이제 20 개의 클래스와 5 개의 인터페이스 (5 개의 재배치 콜렉션이 있음)를 상상해보십시오. 이게 괜찮습니까? 아니면 제가 다르게 해결할 수 있습니까?
코드 검토를위한 것 같아요. –
이 인터페이스에 액세스 할 코드가 수행하는 작업에 크게 의존합니다. IComparable은 개체 구조의 분석에서 나온 것이 아니라 이러한 개체에서 작동하는 알고리즘/코드에서 필요한 것이 무엇인지 분석 한 것입니다. – AaronLS
이 질문은 코드 검토에 관한 것이므로 해당 질문을 프로그래머 나 프로그래머에게 전달해야합니다. –