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

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

Employee Facade에 코드는 별로 없다. 이 클래스는 세 클래스의 객체를 생성하고, 요청된 메서드를 가지는 객체로 위임하는 일을 책임 진다.
결론
단일 책임 원칙은 메서드와 클래스 수준의 원칙이다. 하지만 이보다 상위의 두 수준에서도 다른 형태로 다시 등장 한다. 컴포넌트 수준에서는 공통 폐쇄 원칙이 된다. 아키텍처 수준에서는 아키텍처 경계의 생성을 책임지는 변경의 축이 된다.

![[소프트웨어 아키텍처] 소프트웨어 개발/배포에 대한 고찰](https://codecampai.com/wp-content/uploads/2026/02/image-34-768x419.jpg)
![[소프트웨어 아키텍처] 아키텍처 결정 안티패턴](https://codecampai.com/wp-content/uploads/2026/01/image-18-768x446.jpg)
![[소프트웨어 아키텍처] 파이프라인 아키텍처란 무엇인가?](https://codecampai.com/wp-content/uploads/2026/01/image-10-768x374.jpg)
![[소프트웨어 아키텍처] 레이어드 아키텍처란 무엇인가?](https://codecampai.com/wp-content/uploads/2026/01/image-7-768x497.jpg)
![[소프트웨어 아키텍처] 효율적인 프로젝트 팀 만들기](https://codecampai.com/wp-content/uploads/2026/01/image-24-768x512.jpg)