수강신청(도메인모델)
리뷰 내용
🤔 리뷰 링크
2단계 - 수강신청(도메인 모델) #463
🤔 문제 해결에 정답은 없지만 간단한 방식이 좋지 않을까?
유료 강의와 무료 강의의 구분을 추상 클래스 SessionType를 사용하였는데 이게 괜찮은 방법일까요?
혹시 더 좋은 방법이나 개선할 부분 알려주시면 반영하겠습니다.
리뷰어
- 같은 문제를 해결할 수 있는 방법은 다양하다.
- 다만
SessionType
에 책임을 좀 더 부여하여 간단히 문제를 해결할 수 있을거 같다.
나
- 문제 해결방법에는 다양한 방법이 있지만 최대한 간단한 방법으로 문제를 해결할 수 있도록 노력해야겠습니다.
🤔 상속보다는 합성을 사용하라
리뷰어
- 상속보다는 합성 쪽으로 고려하면 좋을거 같다.
상속 보다는 합성
- 상속의 문제점
- 캐슐화 깨지고 결합도 높아짐
- 상속을 위해 부모 클래스의 내부 구조를 잘 알고 있어야 하며 이는 캡슐화 파괴, 결합도 상승으로 이어집니다.
- 상속은 자식 클래스와 부모 클래스가 강하게 결합하게 하기 때문에 유연성 및 확장성이 떨어집니다.
- 클래스 폭발
- 상속을 사용하는 경우 필요 이상으로 많은 수의 클래스를 추가하게 됩니다.
- 이는 상속의 근본적인 한계입니다. 런타임에는 변경이 불가능하기 때문에 다양한 조합이 필요하다면 새로운 클래스를 추가해야만 합니다.
- 다중 상속에 의한 문제가 발생
- 자바에서는 다중 상속을 허용하지 않습니다. 따라서 상속이 필요한 클래스가 다른 클래스를 이미 상속중인 경우 문제가 발생할 수 있습니다.
- 위와 같은 문제점 때문에 상속보다는 합성을 사용해합니다.
- 합성을 이용하면 구현을 효과적으로 캡슐화할 수 있습니다.
- 의존하는 객체를 교체하는 것이 비교적 쉽습니다.
- 합성을 통해 느슨한 결합을 형성할 수 있습니다.
- 만약 상속을 반드시 사용해야 한다면 유사한 두 메소드를 추출하여 동일한 형태로 만들고, 부모 클래스의 코드를 자식으로 옮기는 것이 아니라 자식 클래스의 코드를 부모로 옮기도록 해야 합니다.
- 상속의 진정한 목적은 코드 재사용이 아니라, 다형성을 활용하기 위한 서브타입 계층을 구축하는 것입니다.
- [OOP] 코드의 재사용, 상속(Inheritance)보다 합성(Composition)을 사용해야 하는 이유
🤔 정적 팩토리 메서드 사용을 주의하라
리뷰어
- 이미지 타입이 추가될 때 마다 정적 팩토리 메서드가 추가되는 구조는 비효율적인거 같다.
🤔 네이밍
리뷰어
- 변수명 또는 메서드명은 언제나 사람들이 이해할 수 있는게 좋다.