image.png

Client로 관심사를 분리하는 경우 문제점

Client가 관심사를 2개 가지고 있음

  1. PaymentService가 다른 클래스 오브젝트와 어떻게 관계를 맺어야 할지의 책임
  2. PaymentService를 이용해서 업무를 수행하는 책임

여러 관심사를 가지고 있는 경우 해결방법?

관심사를 다른 클래스로 넘기면 됨

image.png

⇒ 런타임 오브젝트 사이에 의존관계를 설정하는 책임을 ObjectFactory에서 넘기자

추가 개선

ObjectFactory는 현재 메서드 하나 안에 PaymentService 오브젝트도 만들고, ExRateProvider 인터페이스를 구현한 오브젝트도 만드는 2가지 관심사가 합쳐져 있음

이와 같이 변경하게 되면 exRateProvider의 구현 클래스를 변경하고 싶은 경우 빠르게 찾아갈 수 있음

메서드의 이름이 분명하기 때문

각각의 오브젝트를 만드는 2개의 메서드로 분리 후

필요한 경우 메서드를 호출하여 오브젝트를 가져와 생성자에 주입하는 방식을 사용