클래스 상속 결합 문제 (메서드)

작업자
강성원
Issue.No
14
날짜
2024/04/02
분류
설계
심각도
50
완료
착수
클래스 상속에는 결합력이 강해지는 문제가 있다. 나도 지금 이 문제를 겪었다. 유닛의 상태를 변경할 때 쓰이는 BaseStateProvider를 자식에게 상속시키려함. 상속을 시키다보니 어떤 자식은 [A,B,C]메서드를 사용하고 다른 자식은 [A,B]만 사용하는 경우가 생긴다. 아예 [A,B,D,E] 메서드를 사용하기도 한다.
간단하지만 좋지 않은 방법은 A부터 E까지 모든 메서드를 부모에 선언해놓고 자식쪽에서 메서드 내용만 비워놓는 것이다.
정말 좋지 않다.
찾아보니 이러한 상속의 강한 결합 문제는 클래스나 메서드를 폭발적으로 늘어나게 한다고 한다.
====================
합성 패턴, 전략 패턴 등을 사용하려고 했으나 적절하지 않은 느낌이었고, 이해도 잘 되지 않음
====================
BaseStateProvider에 제네릭(Enum으로 제한) 부여해서 해결할 수 있게 됨
⇒ 온갖 곳에 제네릭 다 붙여야하고, 어떤 클래스에는 전혀 상관 없는 열거형이 붙게 됨
====================
내가 사용할 메서드에만 제네릭을 적용하는 것으로 해결
클래스의 상속과 결합력을 낮추는 해결 법은 아니었지만 현재 프로젝트에 필요한 해결 법을 찾아 적용한 것에 의미를 둠.
=====================
애초에 설계할 때 SOLID 원칙을 따르지 않은 것이 잘못인 것 같다.
리팩토링 하는 기간에 설계를 다시 해보는 방향으로 가야겠음.