#12. [개체지향 원칙] 관심사의 분리 원칙(Separation of Concerns Principle)
관심사의 분리 원칙은 구별되는 부분들로 분리시켜라 라는 원칙입니다.
조금 풀어 쓰면,
- 단일 책임 원칙 과 유사하지만, 좀더 상위 레벨에서, 서로간에 책임을 공유하지 않도록,
- 모듈(개체, 컴포넌트, 서비스, 함수), 프로젝트, 폴더 등을 레이어링하라.
라는 뜻입니다.
이 원칙을 준수하면,
- 레이어링한 부분에 구현과 책임이 응집되어 유지보수성이 향상됩니다.
- 레이어링한 부분에만 관심사가 집중되어 안정성이 향상됩니다.
- 각각의 관심사가 독립적으로 응집되어, 다른 시스템과의 확장이 용이합니다.
- 대규모 프로젝트의 경우 역할 분담이 용이합니다.
준수 방법 : 가로 분리
어플리케이션 내에 기반과 응용의 계층으로 분리하는 경우입니다. 주로 리소스 레이어 - 비지니스 레이어 - 프레젠테이션 레이어로 분리합니다. 상위 레이어는 하위 레이어에 의존합니다.
준수 방법 : 세로 분리
어플리케이션 내에서 각각을 기능 모듈로 분리하는 경우에 사용합니다. 수평적인 관계에서는 상호 의존하지 말아야 합니다. 기능을 플러그인(혹은 애드인)으로 추가할 수 있듯이, 각각의 기능을 독립시키는게 좋습니다.
준수 방법 : 가로/세로 분리
각 모듈들을 가로 분리를 적용하면, 다음과 같이 분리할 수 있습니다.
또한, 각 모듈이 공통으로 사용하는 기반 모듈이나 인터페이스가 있다면, 다음과 같이 분리할 수 있습니다.
댓글남기기