コンテンツにスキップ

Adapter

互換性のない既存インターフェースを、現在システムが期待するインターフェースへ変換するパターンです。

  • レガシー SDK や外部 SDK をプロジェクト標準 API に合わせたいとき
  • 既存実装を修正せずに再利用したいとき
  • Target
  • Adaptee
  • Adapter

以下のコードは、上で説明した状況を 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);
}
}
  • モジュール境界が明確になり、結合度を下げられます。
  • 既存コードを変更せずに機能拡張や統合がしやすくなります。
  • ラッパー層が深くなりすぎるとデバッグが難しくなります。
  • 責務境界が曖昧にならないよう、インターフェースは小さく保つべきです。

既存インターフェースを目標インターフェースへ変換して再利用する流れです。

Adapter の流れ