📝요약
- 어떤 클래스가 객체를 만들기 위해 다른 객체를 필요로 할 때, 그 클래스는 다른 객체에 의존한다고 말한다. 의존 대상인 객체를 클래스에 전달할 때, 의존성 주입(DI)의 대안으로 사용할 수 있는 패턴이 서비스 로케이터 패턴이다. 서비스 로케이터는 어플리케이션에서 필요로 하는 객체를 제공하는 책임을 가진 Object이다. DI 보다 보일러 플레이트 코드가 비교적 적지만, 확장성이 낮고 테스트가 어렵다.
📌참고자료
📌도움될만한 지난 포스팅
의존성 주입 예
-> 생성자 파라미터로 의존 대상 받아오기 (= Construction Injection)
class Car(private val engine: Engine) {
fun start() {
engine.start()
}
}
fun main() {
val engine = Engine()
val car = Car(engine)
car.start()
}
서비스 로케이터 패턴 예
-> 서비스 로케이터 Object로 의존 대상 받아오기
object ServiceLocator {
fun getEngine(): Engine = Engine()
}
class Car {
private val engine = ServiceLocator.getEngine()
fun start() {
engine.start()
}
}
fun main(args: Array) {
val car = Car()
car.start()
}