-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
[4.3.1 빈 생성 시 메서드 실행하기] 중 ‘이런 콜백 매커니즘은 같은 타입의 빈이 몇 개 안 되거나 애플리케이션이 스프링과 결합되지 않게 할 때 유용’하다는 말에서 결합에 대해 찾아보다가 객체지향에서 결합도와 응집도에 대한 개념이 중요한 것 같아 이슈로 올립니다.
-
결합도(Coupling)모듈이 다른 모듈에 의존하는 정도의 척도 (모듈간의 상호 결합 정도)
= 클래스 간에 얼마나 연결이 되어 있는가?- 결합도가 높다 = 객체를 사용자가 만든다 = 수정하기 어렵다
(클래스 간 연결이 많다면 하나의 수정을 위해 많은 클래스들을 수정해야 함) - 결합도가 낮다 = 스프링 컨테이너가 객체를 관리한다 = 코드를 수정할 필요가 없다
- 결합도가 높다 = 객체를 사용자가 만든다 = 수정하기 어렵다
-
응집도(Cohesion)모듈에 포함된 내부 요소들이 하나의 책임/목적을 위해 연결되어 있는 정도
응집도가 높을수록 변경 대상과 범위가 명확해지기 때문에 코드를 수정하기 쉬워진다
객체지향 설계 원칙(SOLID) 중 개방-폐쇄 원칙(OCP, Open-Closed Principle)은 객체의 확장에 대해서는 개방적으로, 객체의 수정에 대해서는 폐쇄적이어야 한다는 원칙입니다.
즉, 1. 애플리케이션의 요구 사항이 변경될 때 새로운 동작을 추가해 모듈을 확장할 수 있어야 하며
2. 기존 코드를 수정하지 않고 모듈의 기능을 확장하거나 변경할 수 있어야 한다는 것인데
이는 '결합도가 낮아야 하며, 응집도는 높아야 한다'는 말로 정리할 수 있을 것 같습니다.
결합도를 낮추고 응집도를 높이려면 코드를 어떻게 작성해야 하며 각각 어떤 사례가 있을지 같이 얘기해보고 싶습니다!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels