C#에서 상속 개념의 실제 사용에 대한 연구를하면서 흥미로운 코드 패턴을 발견했습니다. 제네릭이 아닌 인터페이스 I
은 제네릭 형식 I<T>
을 여러 번 상속 받았으며 각각 다른 형식 인수가 있습니다. I
이 I<T>
에서 상속되는 유일한 이유는 오버로드를 선언하기위한 목적이므로 I<T>
은 상속 관계를 제외하고 코드의 아무 곳에서나 참조되지 않습니다. 설명하기 : 실제로이 디자인 패턴의 이름을
interface Combined : Operations<Int32>, Operations<Int64>, Operations<double> {}
interface Operations<T> {
T Add(T left, T right);
T Multiply(T left, T right);
}
의 IOperations
인터페이스는 다양한 XML 문서 30 방법이있다, 그래서이 선언 그렇게 여러 번 반복하고 싶지에 논리적 인 것 같다. 나는 '과부하 반복 디자인'과 '메소드 선언 재사용 설계 패턴'등을 찾아 봤지만 유용한 정보는 찾을 수 없었다.
아마도이 패턴은 C++와 같은 다중 상속을 지원하는 언어에서 더욱 심오하게 사용됩니다. 여기서는 작업의 구현도 제공 될 수 있습니다.
tl; dr : 위의 코드 예에서 디자인 패턴의 이름을 지정할 수 있습니까?
질문에 대한 답변 : 예는 단지 예일 뿐이며 더 많은 데이터 유형을 추가하거나 제거 할 수 있습니다. 인터페이스는'IOperations'에서 연산을 지원하는 고정 된 수의 타입이 있고'IOperations '는 절대로 참조되지 않고'Combined' 만 사용되기 때문에 메소드 대신 generic입니다. 이것이 완료된 유일한 이유는 메소드 선언과 XML 문서를 반복하는 것입니다. ('Combined'를 구현 한 클래스는 모든 메소드를 별도로 구현합니다.) –
Bas