アダプターデザインパターン

Adaptという言葉は、新しい用途に適していることを意味します。

UnsplashのMaartenWijnantsによる写真

私たちの家の例を見てみましょう。私たちは皆、壁に電気ソケットが取り付けられているのを見てきました。これらのソケットには、国ごとに独自のスタイルのコンセントがあるという奇妙な事実があります。そのため、スマートフォンメーカーは、国に固有の異なるスタイルの充電アダプターを製造しています。

もう1つの優れた例は、AppleのHyperdriveです。非常に多くのデバイスを単一のUSBポートに接続します。ここでは、ハイパードライブがアダプターとして機能しています。

画像ソース:HyperDriveThunderbolt3ハブ

アダプターはラッパーとも呼ばれます。さまざまなオブジェクトで使用できるオブジェクトをラップするためです。

最初にUMLを見てみましょう。

  1. 基本的にはclient パターンを使いたいクラスです。呼び出し元のクラス。
  2. によってのみ提供できるものがclient 欲しいのですが、私たちは直接HAS-A関係を持ち、それを使って行うことができます。しかし、問題は、別の、たとえば別のによって提供される別のspecific_requestがある場合にあります。この場合、別のHAS-A関係を作成する必要があり、これは新しい要件ごとに再発する可能性があります。したがって、問題が発生します。新しいリクエストが来るたびに、それをクライアントクラスにマッピングする必要があります。これで、リクエストごとにコードを拡張できない場合、そのアプローチの何が問題になっているのかをうまく議論できます。 -閉鎖原則」私たちは変更のために閉鎖されています。Specific_request()class Adapteeclass Adaptee2

この混乱に対処するために、新しいリクエストの概念を抽象化し、抽象化によってクライアントからのリクエストの委任を処理させることができます。上記のUMLでは、によって処理されますinterface ITarget。

コーディングに飛び込みましょう。

たとえば、アプリケーションがXMLファイルからデータを読み取り、それが今日の目的を果たしているとしましょう。しかし、明日、アプリケーションでJSONをサポートしたい場合は、どうしますか?そのとき、Adapterデザインパターンを使用できます。

この問題のアーキテクチャを設計しましょう。次の図では、2つのクラスがXMLAdapteeありJSONAdaptee、これらのクラスはinterface IEmployeeDetails抽象メソッドを持つを継承するGetData()ため、クラスは独自のロジックに独自の実装を使用できます。

は、XMLで結果が必要な場合にインスタンスをclass program注入するか、JSONで結果が必要な場合にインスタンスを渡すことができます。XMLAdaptee’sAdapter objectJSONAdaptee’s

明日YAMLに別の要件が発生した場合は、クラスYAMLAdapteeを作成して独自のロジックをで記述できますGetData() method。

これがUMLの外観です。

interface ITargetクライアントから呼び出されるを作成しましょう。

次にclass Adapter、、

実装しますITarget:このクラスにもありますinterface IEmployeeDetails:このインターフェイスは、XMLとJSONの両方の適応者によって実装され、両方のクラスで同様のアーキテクチャを維持するため、クライアントコードは変更されません。

を作成しましょうinterface IEmployeeDetails:

class employeeと_entity:

class XMLAdapteexmlデータをロードします。今のところ、コード自体からデータを生成できます。

次に、class JSONAdaptee:

最後になりましたが、発信者class program:

XMLデータの出力:行番号15program.cs

JSONデータの出力。コードの上記の行のコメントを外すだけです。行番号18program.cs

完全!この記事を楽しんでいただき、学んだことを自分のアプリケーションに適用するように促されたことを心から願っています。ありがとうございました。

ハッピーコーディング!!

Linkedinで私を捕まえろ

提案された投稿

カウボーイの嘘

巨大企業はいかにしてアメリカ国民にひどい嘘を売ったのか

カウボーイの嘘

西のなだらかな丘陵地帯では、太陽の最初の光が平原の曇った草を照らす、まばゆいばかりの金色の朝です。真っ黒で巨大な穏やかなアンガス牛の群れが日の出を背景にシルエットを描き、誰もがよく知っている場所へ人里離れた道を進んでいます。朝食バー。

脅威ハンティングのための OSINT の収集

脅威ハンティングのための OSINT の収集

サイバー愛好家の皆さん、こんにちは!OSINT for Threat Hunting シリーズへようこそ。最初の記事では、OSINT の概要と脅威ハンティングにおけるその重要性について説明しました。

関連記事

職場革命: 一流の専門家がハイブリッド ワークとリモート ワークについて語る

職場革命: 一流の専門家がハイブリッド ワークとリモート ワークについて語る

今日の急速に進化するビジネス環境において、ハイブリッドおよびリモートワークの概念は前例のない勢いを増しています。企業が従業員のニーズや期待の変化に適応し続ける中、さまざまな分野の専門家が集まり、この変革的な働き方のメリット、課題、将来について議論しています。

その脅威アーカイブ: Vol 7 ブラックバスタ

その脅威アーカイブ: Vol 7 ブラックバスタ

今日の相互接続された世界では、サイバー攻撃の脅威がかつてないほど蔓延しています。サイバー犯罪者や国家主体は常に脆弱性を悪用して貴重なデータを盗もうとしており、あらゆる規模の組織に重大なリスクをもたらしています。

パスワードはもう不要 — パスキーがパスワードをどのように置き換えるか

パスワードはもう不要 — パスキーがパスワードをどのように置き換えるか

曖昧さを避けるために、次の用語が使用されます。認証者; ログイン Web サイトの作成に使用されている携帯電話。ユーザーがログイン要求サービスを行うために使用している Web サイトまたはアプリケーション。特定のサービスを提供するベンダー。例:

アートは政治的ではないのでしょうか?

アートは政治的ではないのでしょうか?

昨日、私たちは今年のユーロビジョン・ソング・コンテストの幕を閉じました。きらびやかでカオスなグランドフィナーレでスウェーデンの歌手ローリーンがトロフィーを持ち帰り、女性として初めて2回優勝し、ABBAがコンテストで優勝してから50年目にその栄冠をスウェーデンに持ち帰りました。 「ワーテルロー」で。彼らはポップ ミュージックの規範において最大のアーティストの 1 つになりました。