* 구성 Compenent
1) Service Interface : Service 사용자에게 제공하기 위해 표준?으로 정한 API가 정의된 Interface
2) Service Registration API : Provider Interface의 구현체를 등록하는 API
3) Service Access API : Service Interface의 구현체를 얻어오는 API (정적 팩토리 메소드) 1
4) Provider Interface : Service Interface의 하위 객체를 생성해주는 API가 정의된 Interface
* Service Provider Framework Pattern 구현 간단예 (JDBC가 해당됨)
// 1) Service Interface
public interface Service {...}
// 4) Provider Interface
public interface Provider {
Service newService();
}
// 팩토리 클래스 & 객체생성불가능 클래스
public class Services {
private static final Map<String, Provider> providersMap = new ConcurrentHasshMap<String, Provider>();
private Services() {} // 객체생성방지
// 2) Service Registration API
public static void registerProvider(String name, Provider provider) {
providersMap.put(name, provider);
}
// 3) Service Access API (정적 팩토리 메소드)
public static Service getMyService(String name) {
Provider provider = proidersMap.get(name);
if(provider != null) {
return provider.newService();
} else {
throw new IllegalArgumentException("No Provider");
}
}
}
* 출처 : Effective Java 2판, 규칙1. 정적 팩토리 메소드 사용 고려
- 반환 타입의 하위 객체를 생성해 줄 수 있는 특징을 활용해 Interface의 하위 구현체를 반환해 줌 (ExecutorService Intreace의 구현체를 반환하는 Executors.new***ThreadPool() 메소드들이 해당됨) [본문으로]
'아는 만큼 보인다 > Design Pattern' 카테고리의 다른 글
Singleton pattern (0) | 2014.12.12 |
---|---|
Builder Pattern (0) | 2014.12.10 |
데코레이터 패턴과 프록시 패턴 (0) | 2012.06.11 |
템플릿/콜백 패턴 (익명 내부 클래스를 주입하는 전략패턴) (0) | 2012.05.22 |
전략 패턴 (using Interface) (0) | 2012.05.18 |