두 공유 클래스에 대한 세부 정보를 공개하지 않고 두 클래스의 구현을 공유하는 방법을 찾고 있습니다. C에서 두 클래스 사이에 개인 구현 공유
- 공용 인터페이스하는 MyInterface
- 클래스 MyCommonImpl :이 기본 클래스 구조를 만들기 위해 기대했다 MyCommonImpl
MyCommonImpl
구현을 MyInterface
의 기능을 가지며 MyImplA
과 MyImplB
에 제공된 하나의 추상 기능을 가지고 있습니다. MyImplA
의 사용자는 어떤 식 으로든 MyCommonImpl
에 대해 알지 않아야합니다. 그것은 단지 암시 적 세부 사항입니다.
필자는 수동 합성 작업을 고려해 보았지만 기능을 전달하기 위해 많은 코드를 복사해야했습니다. MyCommonImpl
에 구현 된 이벤트가 있으며 매개 변수 중 하나가 sender
이므로 문제가 있습니다. 프록시 처리기를 넣고 부분적으로 이벤트를 다시 작성해야합니다. 기본적으로 전체 MyCommonImpl
을 복사하여 붙여 넣는 것보다 더 많은 코드가 필요합니다.
많은 코드를 복제하지 않고 어떻게 할 수 있습니까?
; 질문에 제시된 디자인은 완전히 의미가 있습니다. MyImplA와 MyImplB에'MyCommonImpl'을 숨긴 이유는 무엇입니까? – Codor
우리는 모듈에'MyCommonImpl'을 노출하고 싶지 않습니다. 즉, 라이브러리의 사용자는 공용 인터페이스의 일부가되므로 라이브러리를 보지 않아야합니다. 위에서 설명한 작업을 실제로 수행 할 수 없다는 것을 알고 있으므로 공용 클래스에 대한 상속을 위해 개인 기본 클래스를 사용하십시오. –
상속을 사용하지 않고 구성을 사용하십시오. [위키 백과 : 상속을 통한 작문] –