コンテンツにスキップ

Facade

複雑なサブシステムを単純な上位 API で包み、使いやすさを高めるパターンです。

  • ゲーム起動手順を 1 つのメソッドで隠したいとき
  • モジュール内部の詳細を外部へ隠したいとき
  • Facade
  • Subsystem
  • Client

以下のコードは、上で説明した状況を Unity プロジェクトの文脈で単純化した例です。

public sealed class GameStartupFacade
{
private readonly SaveSystem saveSystem = new();
private readonly AudioSystem audioSystem = new();
private readonly UiSystem uiSystem = new();
public void StartGame()
{
saveSystem.Load();
audioSystem.Initialize();
uiSystem.OpenLobby();
}
}
  • モジュール境界が明確になり、結合度を下げられます。
  • 既存コードを変更せずに機能拡張や統合がしやすくなります。
  • ラッパー層が深くなりすぎるとデバッグが難しくなります。
  • 責務境界が曖昧にならないよう、インターフェースは小さく保つべきです。

複雑なサブシステム呼び出しを単一の入口へ単純化する流れです。

Facade の流れ