[기술 면접 질문] 서비스 로케이터(Service Locator) 패턴

0

기술 면접 준비

목록 보기
14/19
post-thumbnail
post-custom-banner

[기술 면접 질문] 서비스 로케이터(Service Locator) 패턴

📝요약

  • 어떤 클래스가 객체를 만들기 위해 다른 객체를 필요로 할 때, 그 클래스는 다른 객체에 의존한다고 말한다. 의존 대상인 객체를 클래스에 전달할 때, 의존성 주입(DI)의 대안으로 사용할 수 있는 패턴이 서비스 로케이터 패턴이다. 서비스 로케이터는 어플리케이션에서 필요로 하는 객체를 제공하는 책임을 가진 Object이다. DI 보다 보일러 플레이트 코드가 비교적 적지만, 확장성이 낮고 테스트가 어렵다.

📌참고자료

📌도움될만한 지난 포스팅

  • 의존 대상 객체 전달 시, DI의 대안으로 서비스 로케이터 패턴 사용 가능
    • 서비스 로케이터는 어플리케이션에서 필요로 하는 객체를 제공하는 책임을 가짐
  • 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()
    }
  • 서비스 로케이터 패턴
    • 장점: 보일러 플레이트 코드 비교적 적음
    • 단점: 확장성 좋지 X, 싱글톤 객체에 의존하므로 테스트 어려움
profile
Be able to be vulnerable, in search of truth
post-custom-banner

0개의 댓글