🦕

Adapter

2023/09/10に公開

Adapter パターンは、既存のクラスのインターフェースを、別のインターフェースに変換するデザインパターンです。これにより、インターフェースが互換性のないクラスを一緒に動作させることができるようになります。

主要な構成要素:

  1. Target (ターゲット): クライアントが使用する予定のインターフェース。
  2. Adapter (アダプター): ターゲットインターフェースをAdapteeのインターフェースに適応させるクラス。
  3. Adaptee (被適応者): 適応が必要な既存のインターフェースを持つクラス。

例:

既存の2ピンの電源プラグと、3ピンのソケットの間に変換アダプタを使用する例を考えてみましょう。

  1. Target:

    class ThreePinSocket(ABC):
        @abstractmethod
        def connect_three_pin(self):
            pass
    
    
  2. Adaptee:

    class TwoPinPlug:
        def connect_two_pin(self):
            return "2ピンのプラグを接続しました。"
    
    
  3. Adapter:

    class TwoToThreePinAdapter(ThreePinSocket):
        def __init__(self, two_pin_plug):
            self.plug = two_pin_plug
    
        def connect_three_pin(self):
            return self.plug.connect_two_pin() + " 3ピンのソケットにアダプタを使用して接続しました。"
    
    

使用方法:

    plug = TwoPinPlug()
    adapter = TwoToThreePinAdapter(plug)
    print(adapter.connect_three_pin())

出力:

2ピンのプラグを接続しました。 3ピンのソケットにアダプタを使用して接続しました。

利点:

  1. 再利用: 既存のクラスを変更することなく新しいインターフェースで再利用することができます。
  2. 柔軟性: 既存のクラスや新しいシステムの間に柔軟性を持たせることができます。
  3. 互換性: 互換性のないインターフェースを持つクラスを統合することができます。

Adapter パターンは、既存のクラスやシステムが新しい要件やインターフェースと一緒に動作する必要がある場合に特に有用です。

Discussion