클래스의 관점으로 바라봤을 때 아직 두개의 다른 관심사를 가지고 있음
⇒ 변경이 되어야하는 시점과 이유가 다르기 때문에 클래스 밖으로 분리해야 될 필요가 있음
클래스 밖으로 분리해야 되는 이유?
PaymentService
는 환율을 가져오는 방식, 정책 등 매커니즘이 변경되면 계속해서 고쳐야 되기 때문에 클래스 밖으로 분리해야 되는 것prepare
메서드를 각각 고쳐서 사용하는 것이 아닌 환율정보를 가져오는 코드를 밖으로 분리해내고 PaymetService
클래스는 변경이 되지 않아도 getExRate()
가 바뀌어도 상관이 없도록 변경해야 됨기존의 코드를 건들지 않아도 기능을 확장해서 사용할 수 있도록 해줌
상속을 통해 유연한 확장을 하는 대표적인 디자인 패턴 : TempleteMethod Pattern, FactoryMethod Pattern
PaymentService
를 상속받아서 구현하도록 하면 됨