LoginSignup
0
0

More than 1 year has passed since last update.

C#でObject Adapterパターンの用途例

Posted at

概要

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();
    }
}

クラス図

スクリーンショット 2023-04-12 12.24.44.png

参考文献

書籍AdaptiveCode4章で登場する
【GoFのデザインパターン】「Adapter」ってどんなパターン?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0