dev_공부일지/Spring 6
관심사 분리 4.오브젝트 팩토리
dev_0hoon
2024. 9. 19. 21:52
현재는 Client에서 paymentService를 부를 때 어떤 것을 부를 지에 대해 책임을 가진 것이 된다.
public class Client {
public static void main(String[] args) throws IOException {
//PaymentService paymentService = new PaymentService(new WebApiExRateProvider());
ObjectFactory factory = new ObjectFactory();
PaymentService paymentService = factory.paymentService();
Payment payment = paymentService.prepare(100L, "USD", BigDecimal.valueOf(50.7));
System.out.println(payment);
}
}
public class ObjectFactory {
public PaymentService paymentService() {
return new PaymentService(exRateProvider());
}
public ExRateProvider exRateProvider() {
return new WebApiExRateProvider();
}
}
ObjectFactory를 이용해서 그 안에서 Service를 부르게끔. Controller나 Handler의 값에서 변경되는 것이 아닌, 이제는 관리의 주체가 Factory로 변경되었다.