![]() |
MIR Engine
미래 지향 설계에 초점을 맞춘 자체 제작 게임 엔진
|
다양한 서비스(인터페이스 구현체)를 등록하고 조회하는 Service Locator 클래스 더 자세히 ...
#include <ServiceLocater.hpp>
Public 멤버 함수 | |
template<typename ServiceType > | |
void | RegisterService (std::shared_ptr< ServiceType > service) |
특정 타입의 서비스를 등록하는 템플릿 메서드 | |
template<typename ServiceType > | |
std::shared_ptr< ServiceType > | GetService () |
특정 타입의 서비스를 조회하는 템플릿 메서드 | |
template<typename ServiceType > | |
bool | HasService () const |
특정 타입의 서비스 등록 여부를 확인하는 템플릿 메서드 | |
정적 Public 멤버 함수 | |
static ServiceLocator & | Instance () |
ServiceLocator 인스턴스를 전역적으로 접근하기 위한 정적 메서드 | |
다양한 서비스(인터페이스 구현체)를 등록하고 조회하는 Service Locator 클래스
ServiceLocator는 싱글턴 패턴으로 생성, 필요에 따라 여러 타입의 서비스를 동적으로 등록하고, 다른 곳에서 쉽게 조회할 수 있도록 함.
이 클래스를 통해 서비스 의존성을 간단히 해결할 수 있으나, 의존성 역전 원리나 의존성 주입 방식에 비해 의존 관계가 명확히 드러나지 않을 수 있으므로 주의.
|
inline |
특정 타입의 서비스를 조회하는 템플릿 메서드
ServiceType | 조회할 서비스 타입 |
std::runtime_error | 서비스가 등록되어 있지 않을 경우 예외 발생 |
서비스 존재시 정적 캐스팅하여 반환, 없으면 예외 던짐.
|
inline |
특정 타입의 서비스 등록 여부를 확인하는 템플릿 메서드
ServiceType | 확인할 서비스 타입 |
services 맵을 조회하여 ServiceType 키가 존재하는지 확인.
|
inlinestatic |
ServiceLocator 인스턴스를 전역적으로 접근하기 위한 정적 메서드
싱글턴 패턴을 사용하여 전역에 유일한 ServiceLocator 인스턴스 제공.
|
inline |
특정 타입의 서비스를 등록하는 템플릿 메서드
ServiceType | 등록할 서비스 타입 |
service | 공유 포인터 형태로 제공되는 서비스 구현체 |
typeid(ServiceType)를 키로 하는 맵에 service 저장. 이후 다른 곳에서 GetService<ServiceType>()를 통해 서비스 조회 가능.