좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높여야 한다.
결합도 : 클래스간의 상호 의존 정도를 나타내는 지표로써 결합도가 낮으면 클래스간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리하다.
B라는 클래스가 A의 클래스에 의존을 하고 있고, C라는 클래스는 B클래스에 의존하고 있다.
그런데 A라는 클래스에서 수정이 되면 B,C에도 모두 영향이 가기때문에 B,C도 모두 수정해줘야 한다.
꼬리에 꼬리를 물어 유지보수에 어려움이 있다.
응집도 : 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 높은 클래스는 하나의 책임에 집중하고 독립성이 높아져 재사용 및 유지보수가 용이하다.
디자인 패턴의 장점
- 개발자(설계자)간의 원활한 소통
- 소프트웨어 구조 파악 용이
- 재사용을 통한 개발 시간 단축
- 설계 변경 요청에 대한 유연한 대처
디자인 패턴의 단점
- 객체지향 설계 / 구현 (객체지향을 명확하게 이해하지 못하면 어려움이 있다.)
- 초기 투자 비용 부담
여러가지 디자인 패턴이 있지만 현재 모든 디자인 패턴을 공부하기에 시간적 여유가 없어 몇가지만 해보려고 한다.