오브젝트 팩토리
2024. 7. 3. 10:17ㆍ토비의 스프링 6
현재 client는 클라이언트로서의 책임과 PaymentService와 ExRateProvider 오브젝트 사이의 관계설정 책임을 두 가지를 가지 고 있다. 관심사의 분리가 필요하다
Client
package tobyspring.hellospring;
import java.io.IOException;
import java.math.BigDecimal;
public class Client {
public static void main(String[] args) throws IOException {
PaymentService paymentService = new PaymentService(new WebApiExRateProvider());
Payment payment = paymentService.prepare(100L,"USD", BigDecimal.valueOf(50.7));
System.out.println(payment);
}
}
ObjectFactory클래스를 이용해 Client가 사용 할 PaymentService를 얻어온다.

ObjectFactory
package tobyspring.hellospring;
public class ObjectFactory {
public PaymentService paymentService() {
return new PaymentService(exRateProvider());
}
public ExRateProvider exRateProvider(){
return new WebApiExRateProvider();
}
}
Client
package tobyspring.hellospring;
import java.io.IOException;
import java.math.BigDecimal;
public class Client {
public static void main(String[] args) throws IOException {
ObjectFactory objectFactory = new ObjectFactory();
PaymentService paymentService = objectFactory.paymentService();
Payment payment = paymentService.prepare(100L,"USD", BigDecimal.valueOf(50.7));
System.out.println(payment);
}
}
클라이언트의 관계설정 책임을 가진 코드를 ObjectFactory라는 이름으로 분리한다. ObjectFactory는 사용할 클래스를 선 정하고 오브젝트를 만들면서 의존관계가 있다면 이를 생성자에 전달해서 만드는 기능을 담당한다.
'토비의 스프링 6' 카테고리의 다른 글
| 스프링 컨테이너와 의존관계 주입 (0) | 2024.07.03 |
|---|---|
| 원칙과 패턴 (0) | 2024.07.03 |
| 관계설정 책임의 분리 (0) | 2024.07.03 |
| 인터페이스 도입 (0) | 2024.07.03 |
| 클래스의 분리 (0) | 2024.07.03 |