원칙과 패턴
- 원칙 : 객체지향 설계 원칙
- 패턴 : 객체지향 디자인 패턴
객체지향 설계 원칙
- 개방 폐쇄 원칙
- 높은 응집도와 낮은 결합도
- 전략 패턴
- 제어의 역전
개방 폐쇄 원칙 Open-Closed Principle(OCP)
- 클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 함
- 클래스가 기능을 확장할 때 클래스의 코드는 변경되지 않음
- 환율 정보를 가져오는 방법을 확장할 때
PaymentService
코드가 변경되지 않음
(전략 패턴에도 개방 폐쇄 원칙이 잘 적용되어 있음)
높은 응집도와 낮은 결합도 High Coherence and low coupling
- 응집도가 높다는 것은 하나의 모듈이 하나의 책임 또는 관심사에 집중되어있다는 뜻
- 특징 : 변화가 일어날 때 해당 모듈에서 변하는 부분이 커짐
- 장점 : 변화가 일어날 때 비용이 적게 듦
- 응집도가 낮아서 하나의 모듈에서 변화가 일어날 때 일부분만 바뀌면
바뀌지 않은 나머지 영역의 코드에 어떠한 영향을 주는지 검증이 필요 ⇒ 개발 비용 증가
- 책임과 관심사가 다른 모듈과는 낮은 결합도. 즉, 느슨하게 연결된 형태를 유지하는 것이 바람직
- 코드레벨에서 결합도가 높다면 한가지 수정하는 경우 많은 부분이 따라서 고쳐져야 됨
결합도가 낮은 코드
![image.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/a7e1e85e-d6f9-43d3-8475-0933babeaf4a/79dab8f4-a7bd-478d-8d2d-ba554e70adb5/image.png)