내가 클래스가 말해봐. 클래스 A와 클래스 B를 랩핑하여 myA와 myB를 얻고 싶습니다. 이제 외부에서 A 클래스와 B 클래스에 액세스 할 수 없어야하지만 myA 및 myB와 동일한 기능을 사용할 수 있습니다. foo()는 타사 모듈에서 호출 할 수 있습니다.래퍼 디자인 패턴
캡슐화가 아닌 상속을 사용하여이 작업을 수행하는 것이 좋습니다.
그래서이 문제가 있습니다 : A- 호출
- > myFoo는() (때문에 동일한 서명 및 다른 반환 형식의 방법을 이름을 변경해야합니다)() 경우 :: foo에 전화해야 타입의 IS myA.
- a가 클래스 myA2 :: myA 인 경우 a-> myFoo()를 호출하면 myA2 :: myFoo()를 호출해야합니다.
우아하게하는 방법에 대한 제안 사항이 있으십니까? 나는 몇 가지 해결책을 생각해 냈지만 나는 전체적인 관점에서 신선한 관점을 선호한다.
편집 :
그냥 이론적 인 질문입니다. 나는 실제로 이것을 할 필요가 없으며, 그것이 성취 될 수있는 방법을 생각하고 있습니다.
EDIT2 :
myA2는 myA를 확장하는 클래스입니다. 패턴이 나오기 전에는 A2 (제 3 자 모듈에서 클래스 A를 확장 한 클래스)라고 불렸을 것이다.
명시된 환경 설정에도 불구하고 캡슐화를 사용해야하며 상속하지 않아야합니다. 캡슐화를 사용하면 타사 라이브러리의 모든 종속성을 격리 할 수 있습니다. – antlersoft
이론적 인 질문입니다. –
Luchian :'myA'는'A'와'myB'를'B'로 둘러 쌉니다 만,'myA2'는 무엇입니까? – Nawaz