シンプルなデザインパターン:アダプターパターン
2018年3月10日1分で読める

シンプルなデザインパターン:アダプターパターン

この記事はAIによって翻訳されたため、不正確な場合があります。

免責聲明: このブログ記事の翻訳はAIによって生成されました。翻訳の正確性について保証はありません。重要な情報については、元の記事をご参照ください。

このシリーズが何についてなのか分からない場合は、シリーズの最初の記事へのリンクをご覧ください。その記事の最初のセクションは、シリーズの動機と紹介です。このシリーズの目的をより理解するのに役立つことを願っています。


アダプターパターン

アダプターパターンは、GoFデザインパターンの中で理解しやすいパターンです。名前の通り、アダプターパターンは互換性のないインターフェースを互換性のあるインターフェースに変換します。

アダプターの例 Best Buyからの画像

例えば、レガシーモジュールがあるとします。必要な機能を提供していますが、そのインターフェースが現在開発している新しいアプリケーションに適合しません。できることの一つは、レガシーモジュールにラッパーを提供して、そのインターフェースを新しいアプリケーションで使用できるものに変換することです。

とてもシンプルですが強力な概念ですよね?

2つの長方形が互いに重なっているかどうかを計算するのに役立つ重複チェック関数があります。その関数がどのようなものか見てみましょう:

const checkOverlap = (topLeft1, w1, h1, topLeft2, w2, h2) => {
  // ...ステップをスキップ
  return isOverlap // boolean
}

これはtopLeft、幅w、高さhを取って長方形を表現します。今のところ、私たちは皆これに満足しています。

将来のある時点で、アプリケーションは何らかの理由で長方形の表現を上記のものからtopLeftbottomRightに変更しますが、それでも素晴らしいcheckOverlap関数が必要です。それを行う一つの方法は、新しい表現の入力を元のものに変換するラッパーを提供することです:

const checkOverlapV2 = (topLeft1, bottomRight1, topLeft2, bottomRight2) => {
  //... 引数からw1, h1, w2, h2を計算
  return checkOverlap(topLeft1, w1, h1, topLeft2, w2, h2)
}

これで、レガシー関数を書き直すことなく使用できます。お疲れ様!

結論

アダプターパターンは、既存の環境と互換性のないコードを再利用するエレガントな方法を提供します。再利用したい複雑なレガシーモジュールがたくさんある場合に非常に役立ちます。この記事がアダプターパターンの基本的な理解に役立つことを願っています。これについてもっと学びたい場合は、参考文献のリンクをチェックしてください。ありがとうございます!

参考文献