Adapter
Adapter
Section titled “Adapter”パターン一言説明
Section titled “パターン一言説明”互換性のない既存インターフェースを、現在システムが期待するインターフェースへ変換するパターンです。
Unity でよく使う状況
Section titled “Unity でよく使う状況”- レガシー SDK や外部 SDK をプロジェクト標準 API に合わせたいとき
- 既存実装を修正せずに再利用したいとき
構成要素(役割)
Section titled “構成要素(役割)”- Target
- Adaptee
- Adapter
Unity 例 (C#)
Section titled “Unity 例 (C#)”以下のコードは、上で説明した状況を Unity プロジェクトの文脈で単純化した例です。
public interface IAdsService{ void ShowRewardedAd(string placementId);}
public sealed class LegacyAdsSdk{ public void ShowRewardVideo(string zoneId) { }}
public sealed class LegacyAdsServiceAdapter : IAdsService{ private readonly LegacyAdsSdk legacyAdsSdk = new();
public void ShowRewardedAd(string placementId) { legacyAdsSdk.ShowRewardVideo(placementId); }}- モジュール境界が明確になり、結合度を下げられます。
- 既存コードを変更せずに機能拡張や統合がしやすくなります。
- ラッパー層が深くなりすぎるとデバッグが難しくなります。
- 責務境界が曖昧にならないよう、インターフェースは小さく保つべきです。
動作ダイアグラム
Section titled “動作ダイアグラム”既存インターフェースを目標インターフェースへ変換して再利用する流れです。