アーキテクチャ
ClientSimのアーキテクチャは、イベントベースのオブザーバーパターンを採用した小さなコンポーネントを中心に構成されており、各クラスがそのクラスに必要な依存関係のみを注入されて初期化されるという、手動の依存関係注入(Dependency Injection)を組み合わせています。同梱されているプレイヤーコントローラーは汎用的な依存関係プロバイダーに基づいて設計されており、これにより将来的にコアシステムを書き直すことなくVR対応へ拡張することが可能です。
オブザーバーパターン
ClientSimはオブザーバーパターンを使用してシステム内のイベントを送信します。これにより、どのシステムがイベントを処理するかを知らなくても、あらゆるコンポーネントがイベントをリッスンできるようになります。イベントを利用することで各システム間の結合が緩和され、テストのしやすさが向上します。あるシステムで何かが発生した際にメッセージを送信するために、別のシステムに直接依存する必要がなくなるためです。詳細については、EventDispatcherを参照してください。
依存性の注入(Dependency Injection)
ClientSimのアーキテクチャでは、手動による依存性の注入(Dependency Injection)を採用しています。システムを作成する際、すべての依存関係はコンストラクターまたは初期化メソッドを通じて渡されます。依存関係はプロバイダーとして構成されており、提供するメソッドを宣言するインターフェースを拡張する必要があります。特定のアイテムが必要なクラスは、その実装クラスではなくプロバイダーのインターフェースに依存するようにします。これにより、依存する側のコードを変更することなく、異なるプロバイダーの実装を利用することが可能になります。このプロバイダーパターンにより、テスト環境において依存関係を容易にモック化できます。
最終更新: