サービスロケータ
インターフェース越しにサービスを提供するレジストリ。呼び出し側は具体的な実装を知る必要も、生成する必要もない。
ゲームエンジンには、オーディオ、ログ、ファイルアクセスなど、ほぼ全員が必要とするのに、呼び出しの連鎖全体へ引数として渡したくないグローバルなシステムが多い。サービスロケータは単一の検索窓口を提供し、Locator::audio()->play(...) のように使う。具象クラスは差し替えられ、テスト時には無音のヌルサービスにもできる。
このパターンには異論も多い。Mark Seemann らは、依存関係を隠す隠れたグローバル状態だと批判し、依存性注入を勧める。それでもゲームでは、単純さと、エンジンの中核システムが実行中に入れ替わることはまずないという事情から、採用されがちである。