You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[4.3.1 빈 생성 시 메서드 실행하기] 중 ‘이런 콜백 매커니즘은 같은 타입의 빈이 몇 개 안 되거나 애플리케이션이 스프링과 결합되지 않게 할 때 유용’하다는 말에서 결합에 대해 찾아보다가 객체지향에서 결합도와 응집도에 대한 개념이 중요한 것 같아 이슈로 올립니다.
결합도(Coupling)
모듈이 다른 모듈에 의존하는 정도의 척도 (모듈간의 상호 결합 정도)
= 클래스 간에 얼마나 연결이 되어 있는가?
결합도가 높다 = 객체를 사용자가 만든다 = 수정하기 어렵다
(클래스 간 연결이 많다면 하나의 수정을 위해 많은 클래스들을 수정해야 함)
결합도가 낮다 = 스프링 컨테이너가 객체를 관리한다 = 코드를 수정할 필요가 없다
응집도(Cohesion)
모듈에 포함된 내부 요소들이 하나의 책임/목적을 위해 연결되어 있는 정도
응집도가 높을수록 변경 대상과 범위가 명확해지기 때문에 코드를 수정하기 쉬워진다
객체지향 설계 원칙(SOLID) 중 개방-폐쇄 원칙(OCP, Open-Closed Principle)은 객체의 확장에 대해서는 개방적으로, 객체의 수정에 대해서는 폐쇄적이어야 한다는 원칙입니다.
즉, 1. 애플리케이션의 요구 사항이 변경될 때 새로운 동작을 추가해 모듈을 확장할 수 있어야 하며
2. 기존 코드를 수정하지 않고 모듈의 기능을 확장하거나 변경할 수 있어야 한다는 것인데
이는 '결합도가 낮아야 하며, 응집도는 높아야 한다'는 말로 정리할 수 있을 것 같습니다.
결합도를 낮추고 응집도를 높이려면 코드를 어떻게 작성해야 하며 각각 어떤 사례가 있을지 같이 얘기해보고 싶습니다!
The text was updated successfully, but these errors were encountered:
결합도는 서로 다른 모듈 사이의 의존 정도이고, 응집도는 같은 모듈 내부 요소들 사이의 의존 정도를 의미하는 구나!
결합도를 낮추려면 SOLID 원칙 중 의존관계-역전 원칙(Dependency inversion principle)을 잘 지켜야 한다고 생각해.
이 원칙은 추상화(인터페이스)에만 의존하고 구체화(구현 객체)에 의존하면 안된다는 원칙이래.
이 원칙을 지키면서 의존 관계를 스프링 컨테이너가 관리하면, 두 모듈 사이에 의존성이 약해지겠지??
응집도를 높이려면 SOLID 원칙 중 단일-책임 원칙(SRP, Single Responsibility Principle)을 잘 지켜야 한다고 생각해.
하나의 모듈이 하나의 책임과 목적으로만 연결되어 있으면, 응집도가 올라갈 거 같아!
근데 모듈 하나의 크기가 너무 작으면 클래스 수가 많아지니까.. 그 크기를 적절하게 설정해야겠다... ㅎ
[4.3.1 빈 생성 시 메서드 실행하기] 중 ‘이런 콜백 매커니즘은 같은 타입의 빈이 몇 개 안 되거나 애플리케이션이 스프링과 결합되지 않게 할 때 유용’하다는 말에서 결합에 대해 찾아보다가 객체지향에서 결합도와 응집도에 대한 개념이 중요한 것 같아 이슈로 올립니다.
결합도(Coupling)
(클래스 간 연결이 많다면 하나의 수정을 위해 많은 클래스들을 수정해야 함)
응집도(Cohesion)
응집도가 높을수록 변경 대상과 범위가 명확해지기 때문에 코드를 수정하기 쉬워진다
객체지향 설계 원칙(SOLID) 중 개방-폐쇄 원칙(OCP, Open-Closed Principle)은 객체의 확장에 대해서는 개방적으로, 객체의 수정에 대해서는 폐쇄적이어야 한다는 원칙입니다.
즉, 1. 애플리케이션의 요구 사항이 변경될 때 새로운 동작을 추가해 모듈을 확장할 수 있어야 하며
2. 기존 코드를 수정하지 않고 모듈의 기능을 확장하거나 변경할 수 있어야 한다는 것인데
이는 '결합도가 낮아야 하며, 응집도는 높아야 한다'는 말로 정리할 수 있을 것 같습니다.
결합도를 낮추고 응집도를 높이려면 코드를 어떻게 작성해야 하며 각각 어떤 사례가 있을지 같이 얘기해보고 싶습니다!
The text was updated successfully, but these errors were encountered: