アダプタパターンは、互換性のないインターフェースを持つクラス同士を接続するためのデザインパターンです。このパターンを使用すると、クライアントが期待するインターフェースを提供しつつ、既存のクラスを再利用することができます。
次に、アダプタパターンのサンプルコードを見ていきましょう。この例では、異なる電圧の電源を接続する際にアダプタパターンを適用します。
まず、クライアントが期待するインターフェースを定義します。
class Target:
def request(self):
pass
次に、既存のクラス(アダプティ)を定義します。このクラスは異なるインターフェースを持っています。
class Adaptee:
def specific_request(self):
return "特定のリクエストが処理されました"
アダプタークラスを実装し、ターゲットインターフェースを実現します。
class Adapter(Target):
def __init__(self, adaptee):
self.adaptee = adaptee
def request(self):
return self.adaptee.specific_request()
最後に、クライアントコードを実装します。アダプターを通じてアダプティを使用します。
def client_code(target):
print(target.request())
# クライアントの実行
adaptee = Adaptee()
adapter = Adapter(adaptee)
client_code(adapter)
Target
):request
メソッドを持つインターフェースを定義しています。
アダプティクラス (Adaptee
):
specific_request
メソッドを持ち、クライアントが直接呼び出すことはできません。
アダプタークラス (Adapter
):
Adaptee
のインスタンスを受け取ります。request
メソッド内で、specific_request
を呼び出しています。
クライアントコード (client_code
):
アダプタパターンを使用することで、異なるインターフェースを持つクラス同士を連携させることができます。このパターンは既存のコードを変更せずに新しい機能を追加する際に非常に有用です。