[소프트웨어 아키텍처] 중복된 데이터를 해결하는 단일 책임 원칙(SRP)

단일 책임 원칙을 지키지 않은 아키텍처 구조 이야기를 먼저 참고 해라.

해결책

단일 책임 원칙을 지키기 위해서 데이터와 메소드를 분리 해야 한다. 즉, 아무런 메서드가 없는 간단한 데이터 구조인 EmployeeData 클래스를 만들어 세 개의 클래스가 공유도록 한다. 각 클래스는 자신의 메서드에 반드시 필요한 소스 코드만을 포함한다. 세 클래스는 서로의 존재를 몰라야 한다. 따라서 ‘우연한 중복’을 피할수 있다.

그러나 해당 구조도 단점이 존재한다. 개발자가 세 가지 클래스를 인스턴스화하고 추적해야 한다는 점이다. 이 난관에서 빠져 나올때 흔히 쓰는 기법은 퍼사드(Facade) 패턴이다.

Employee Facade에 코드는 별로 없다. 이 클래스는 세 클래스의 객체를 생성하고, 요청된 메서드를 가지는 객체로 위임하는 일을 책임 진다.

결론

단일 책임 원칙은 메서드와 클래스 수준의 원칙이다. 하지만 이보다 상위의 두 수준에서도 다른 형태로 다시 등장 한다. 컴포넌트 수준에서는 공통 폐쇄 원칙이 된다. 아키텍처 수준에서는 아키텍처 경계의 생성을 책임지는 변경의 축이 된다.

관련 글 보기