서비스 로케이터(SL)란?
📌 정의
애플리케이션에 필요할 수 있는 모든 서비스를 얻는 방법을 알고있는 객체를 갖는 것이다.
IoC를 구현하는 DI 외 방법 중 하나.
🔗 종속성 다이어그램
실제 사용방법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class ServiceLocator{
private static ServiceLocator sInstance;
public static void load(ServiceLocator arg) {
sInstance = arg;
}
private Map services = new HashMap();
public static Object getService(String key){
return sInstance.services.get(key);
}
public void loadService (String key, Object service) {
services.put(key, service);
}
}
class Loader {
private void configure() {
ServiceLocator locator = new ServiceLocator();
locator.loadService("LocalBookFinder", new LocalBookFinder());
locator.loadService("RemoteBookFinder", new RemoteBookFinder());
ServiceLocator.load(locator);
}
}
class Library{
BookFinder finder = (BookFinder) ServiceLocator
.getService("LocalBookFinder");
}
위 코드를 보면 ServiceLocator에 Loader가 Service를 추가해주고, Library class에서 그 Service를 injection해서 사용한다.
Factory와 차이점
Factory는 이름과 같이 객체를 생성해주는 것이고, SL은 서비스(객체)를 가져오는 것이라고 보면 된다.
👍 다른 방법들..
IoC를 구현하는 다른 방법은 아래와 같이 있다.
- Events
- Delegates
등 등