이번 글은 객체지향 프로그래밍 설계 원칙을 공부하면서 제가 생각을 한 내용을 정리 해보려고 합니다.
내용이 부족하고 틀린 부분이 있으면 피드백 부탁드립니다.
설계 원칙의 포인트
결합도는 낮추고 응집도는 높여라
결합도를 낮춰라!
이 글이 아주 많이 보였을 것인데 처음에는 무슨 말인지 이해가 안갔습니다.
결합도는 낮추고 응집도는 높여라?? 뭐야?? 이게??
참 어렵네요...
비유를 하면서 이해하는 방법 밖에 없을 것 같습니다.
조립 부품 A, B, C 가 있다고 가정해 봅시다. 우리는 완제품을 생산 하기 위해 A 라는 부품과 B 라는 부품이 필요합니다.
이로서 완제품은 A 부품과 B 부품의 의존성을 가지게 된다는 것인데 이것이 바로 결합도라고 생각합니다.
그러면 결합도를 낮춘다는 것이 무슨 뜻 일까?? 라는 생각이 듭니다.
다시 가정한 글로 가서 완제품을 생산 하기 위해 A 부품, B 부품 이 필요합니다.
하지만 실수로 완제품 생산 시 필요하지 않은 즉 의존성이 없는 C 부품을 조립하였습니다.
이렇게 완제품에 불필요한 C 부품이 추가 되어 성능이 떨어질 수도 있다는 문제점을 가지고 있습니다.
이 말을 정리해보자면 의존 관계가 명확하지 않거나 없는 부품들은 결합하지 마라! 라고 할 수 있겠네요.
응집도를 높여라!
응집도는 모여 있는 정도를 나타내는 말인데??
포스기를 생각하면서 공부해봅시다.
포스기의 기능은 메뉴추가(), 메뉴삭제(), 메뉴수정() 있을 것이다. 이 기능들은 해당 포스기에 관련이 있는 기능들만 모여있다.
이렇게 해당 객체에 관련있는 기능들만 모여있는 정도를 응집도라 부릅니다.
응집도를 높여라?? 이 말은 무슨 말일까요??
포스기서비스에 해당하는 책임은 포스기서비스에만!
포스기영수증출력서비스에 해당하는 책임은 포스기영수증출력서비스에만!
즉, 책임과 역할을 제대로 나눈다는 말이라고 할 수 있겠네요..
다음 글은 설계 원칙 SOLID 에 대해서 공부한 내용을 정리하겠습니다.
긴글 읽어 주셔서 감사드립니다.
'Laguage' 카테고리의 다른 글
[JAVA] JVM 구조 (0) | 2022.02.11 |
---|---|
[JAVA] 스레드 ( Thread ) (1) | 2022.02.08 |
[JAVA] Optional (0) | 2022.01.20 |
[JAVA] @애노테이션 ( Annotation ) (0) | 2021.12.28 |
[JAVA] 열거형 ( enums ) (0) | 2021.12.28 |
[java] 객체지향 프로그래밍 설계 원칙 - SOLID (0) | 2021.12.10 |
Java DTO 관련 정리... (0) | 2021.11.21 |
[java] 객체지향의 특징 개념부터!! (0) | 2021.10.31 |