概要
ObjectAdapterパターンは「すでに提供されているもの」にインターフェイスとその実装(Adapterクラス)でラップすることで「利用できるもの」にするためのデザインパターン。
例えば「すでに提供されているもの」として下記がある。
他社の製品
そもそもソースがない。(実行ファイルだけもらっている)
すでにテストされていて手を加えるとテストが大変になる。
cf 【GoFのデザインパターン】「Adapter」ってどんなパターン?
参照コード
GPT4で出力させたコードを投稿主が整えたもの
using System;
// ターゲットインターフェース
interface IWebService
{
void CallWebService();
}
// 既存のクラスをアダプターに適合させるクラス(Adapter)
class ExternalWebServiceAdapter : IWebService
{
private ExternalWebService _adaptee;
public ExternalWebServiceAdapter(ExternalWebService adaptee)
{
_adaptee = adaptee;
}
public void CallWebService()
{
_adaptee.Something();
}
}
// 既存のクラス(Adaptee)
class ExternalWebService
{
public void Something()
{
Console.WriteLine("外部Webサービスが呼び出されました。");
// Webサービスの呼び出し処理
}
}
// クライアントクラス
class Client
{
static IWebService target = new ExternalWebServiceAdapter(new ExternalWebService());
static void Main(string[] args)
{
target.CallWebService();
}
}