AbstractFactory
Abstract Factory
Section titled “Abstract Factory”パターン一言説明
Section titled “パターン一言説明”関連するオブジェクト群を、具体型に依存せず生成するパターンです。
Unity でよく使う状況
Section titled “Unity でよく使う状況”- プラットフォームごとのサービス一式を丸ごと差し替えたいとき
- テスト用製品群を分離したいとき
構成要素(役割)
Section titled “構成要素(役割)”- Abstract Factory
- Concrete Factory
- Abstract Product
Unity 例 (C#)
Section titled “Unity 例 (C#)”以下のコードは、上で説明した状況を Unity プロジェクトの文脈で単純化した例です。
public interface IPlatformServiceFactory{ ILoginService CreateLoginService(); IStoreService CreateStoreService();}
public sealed class MobilePlatformServiceFactory : IPlatformServiceFactory{ public ILoginService CreateLoginService() => new MobileLoginService(); public IStoreService CreateStoreService() => new MobileStoreService();}
public sealed class PcPlatformServiceFactory : IPlatformServiceFactory{ public ILoginService CreateLoginService() => new PcLoginService(); public IStoreService CreateStoreService() => new PcStoreService();}- オブジェクト生成責務が整理され、依存関係の管理がしやすくなります。
- 環境や状況ごとに生成方針を柔軟に変えられます。
- 単純な問題に過度な生成抽象化を入れないようにする必要があります。
- 生成ルールが増えるほど、文書とテストの同期が重要になります。
動作ダイアグラム
Section titled “動作ダイアグラム”プラットフォーム別の製品群を同じインターフェースの裏で生成する流れです。