를 사용하여 디자인에 대한 나쁜이다, 그는 응용 프로그램에 대한 몇 가지 디자인을 만든 응용 프로그램 클래스는 서로 같은 파생 무늬? 우선 클래스와 응용 로직의 관계를 이해하기가 어렵습니다. 이것이 제 2 센트입니다. 또 뭐라고 할 수 있니?중첩 된 파생 클래스
답변
상속에 비해 구성을 선호하기 위해 주위에 떠 다니는 약간의 조언이 있습니다. 장점은 종종 더 유연하다는 것이며, 더 단단한 커플 링을 더 어렵게 만듭니다. (이 문제에 대한 논의는 where-does-this-concept-of-favor-composition-over-inheritance-come-from, DeepClassHierarchies, deep-class-inheritance-hierarchy-bad-idea, long-inheritance-hierarchy 개를 참조하십시오).
특히 C#의 경우 구성에 상당한 보일러 플레이트가 필요할 수 있습니다. 결국 구성 요소/기본 클래스의 많은 기능을 노출하려면 수동으로 노출해야합니다. 반대로 상속을 사용하면 모든 것을 노출하는 것이 매우 쉽습니다.
다른 경우에는 밀접하게 결합 된 스파게티 몬스터를 쉽게 만들 수 있으므로 상속을 아끼지 않을 때는 사용하는 것이 좋습니다. 그러나 고전적인 역동적 인 파견과 모든 것이 요구되는 경우가 있습니다. 당신의 개념이 is-a 관계보다 has-a 관계에 더 잘 맵핑 되더라도, 구성의 어법 (wordiness)은 상당한 부담이되는 경우도 있습니다.
그래서 이런 종류의 코드는 유지하기가 어렵지만, 때때로 그럴 가치가 있습니다. 계층 구조가 불필요하게 깊다는 구체적인 예가 있습니다. 그러나 오래된 코드가 몇 가지 사마귀로 자라는 것은 정상입니다. 이것이 최악의 경우라면 자신을 행운이라고 생각하십시오.
API가 너무 커서 수동으로 전달할 수 없기 때문에 상속을 사용하는 경우 해당 API가 너무 길어질 수 있습니다. 항상 도움이 될 수는 없지만 안타깝게도 .NET 라이브러리 자체는 이와 관련하여 나쁜 예입니다. 일반적으로 작은 공공 영역은 모든 종류의 작업을 더 쉽게 만듭니다. –
- 1. 중첩 된 클래스는 기본 내에서 사용하고 파생 클래스
- 2. 파생 클래스에서 중첩 클래스 확장 C#
- 3. 정적으로 파생 된 클래스 초기화
- 4. 파생 된 클래스 정의 직렬화
- 5. 사람의 코드에서 파생 된 클래스
- 6. VB.net - MenuStrip에서 파생 된 클래스
- 7. 기본 클래스 대신 파생 된
- 8. 파생 된 클래스에서 기본 클래스
- 9. 기본 클래스 메서드에서 파생 된 클래스 멤버
- 10. Android.Content.ActivityNotFoundException (Activity에서 파생 된 클래스에서 파생 된 클래스)
- 11. 중첩 된 클래스, 내부 클래스
- 12. 파생 클래스
- 13. 덜 중첩 된 클래스
- 14. 중첩 된 속성/클래스
- 15. 중첩 된 속성 클래스
- 16. 관리 중첩 된 클래스
- 17. 중첩 된 클래스 C++
- 18. C에서 중첩 된 클래스
- 19. 파생 클래스
- 20. 인터페이스가있는 중첩 클래스
- 21. 기본 클래스 컬렉션에서 파생 된 메소드 호출
- 22. 파생 된 클래스 및 속성 C#
- 23. Autofac - 일반에서 파생 된 클래스 해결
- 24. cocos2d - CCSprite에서 파생 된 addchild 클래스
- 25. 파생 된 속성의 액세스 인터페이스 계약에서 클래스
- 26. 랩 파생 된 템플릿 클래스 :: 파이썬
- 27. 파생 된 클래스의 클래스 기반을 엔터티에 저장하십시오.
- 28. JPanel에서 파생 된 JFrame의 클래스 - 복제 그림
- 29. 내 안드로이드 응용 프로그램에서 파생 된 클래스
- 30. 어떻게 위의 코드에서 파생 된 클래스
짧은 답변은 "의존적"입니다. – VahidNaderi