TIL 0401 최종 프로젝트 - 12 / 상속 찐한 결합 풀기(적용은 못 함)

강성원·2024년 4월 14일
0

TIL 오늘 배운 것

목록 보기
58/70

오늘은 그냥 줄 글로 써본다.

=======================

클래스의 상속은 재사용성을 높여주는 장점이 있지만 부모와 자식 간에 결합력이 강해지는 문제가 있다.

나도 지금 이 문제를 겪었다.

결합력이 강해지면 왜 안좋냐?

자식에서 안쓰는 메서드가 생기거나, 자식에서만 추가되는 메서드가 생기는 일이 생기는 것이다.

나는 유닛의 상태를 변경할 때 쓰이는 BaseStateProvider를 자식에게 상속시키려했다.

부모 Provider를 상속 시키다보니 어떤 자식은 [A,B,C]메서드를 부모와 같이 사용하고 다른 자식은 [A,B]만 사용하는 경우가 생긴다. 아예 새로운 메서드가 필요해서 [A,B,D,E] 메서드를 사용하기도 한다.

간단하지만 좋지 않은 해결 방법은 A부터 E까지 모든 메서드를 부모에 선언해놓고 자식쪽에서 메서드 내용만 비워놓는 것이다.

정말 좋지 않다.

찾아보니 이러한 상속의 강한 결합은 쓸데 없는 클래스나 메서드를 폭발적으로 늘어나게 한다고 한다.

=======================

다른 개발자에게 얻은 해결 방법은 SOLID 원칙의 개방폐쇄의 원칙인터페이스 분리 원칙을 잘 살펴보고 적용하는 것이다.

메서드를 상속시키는 것이 아닌 인터페이스로 필요한 메서드만 가질 수 있게 함으로써 부모와 자식의 결합을 느슨하게 만드는 것이다.

=======================

결국 SOLID를 적용하지 않고 아예 구조를 바꿔서 문제를 해결하긴 했지만, 상속이 가지는 문제점과 SOLID 원칙의 중요성을 깊게 깨달았다.

프로젝트 리팩토링 기간에 이 내용을 몬스터같은 부분에 적용해볼 수 있기를 바라며 글을 마친다.

profile
개발은삼순이발

0개의 댓글