デザインパターン


最後の記事では、デザインパターンシリーズの第1章を終えました.
今日、我々は新しい章を始めます、そこで、我々は構造的なデザインパターンを経験します.
「でも、構造は?」聞いてください.
創造的なパターンがどのようにオブジェクトがつくられるかについて焦点を合わせている間、構造的パターンはどのように効率的なDoオブジェクトが他の複雑なオブジェクトをつくるために結合するかに集中します.
実際のアナロジーはフルーツサラダであり、さまざまな果物の様々な種類の果物サラダを作ることができますが、他の優れたいくつかの組み合わせがあります.構造設計パターンは、複雑な構造を形成するために、一緒に効果的に、そして、柔軟にオブジェクトを結合するのを助けます.
開始するには、これらのパターンの最初のアダプタパターンです.
今日は学びます.
  • アダプターパターンの背後にあるコア概念
  • アダプターパターンを実装する方法
  • アダプターパターンを認める方法
  • アダプタパターンの利点と欠点
  • 定義


    私たちは、このシリーズの儀式を持っています.
    では、アダプターパターンは何ですか
    ウィキペディアの答えは次のようになります.

    In software engineering, the adapter pattern is a software design pattern that allows the interface of an existing class to be used as another interface. It is often used to make existing classes work with others without modifying their source code


    なぜWikipediaはすべての音をそんなに複雑にするのですか?
    一言で言えば、アダプタのパターンは、互換性のないインターフェイスを持つクラスを互いに動作させることができます.
    しかし、互換性のないインターフェイスによって何を意味しますか?
    良い質問、Lemmeはあなたに例を与える
    ps .リファクタリングからこの例を取っています.グルは、彼らは偉大なリソースであり、私の研究のほとんどはそこから来ている.あなたはそれらをチェックアウトすることができますhere .
    あなたが在庫監視アプリを持っていることを想像してください.
    このアプリは現在2つのコンポーネントがあります.
  • サードパーティライブラリを使用して株式のデータを取得します.
  • データを監視し、可視化するクライアント.
  • ある日、あなたは分析を提供する新しい図書館に出くわす.
    あなたはすべての興奮を取得し、コーディングを開始します.
    結局、あなたの現在のコードが解析論ライブラリと互換性がないと理解してください.
    解析子ライブラリはJSONで動作しますが、コードはXMLで動作します.
    AnalyticsはJSONでのみ動作しますが、あなたのストックプロバイダはXMLで動作します.
    これは終わりかもしれません.
    ソース https://refactoring.guru/design-patterns/adapter
    この時点で2つのオプションがあります.
  • すべての不満を取得し、終了
  • 強靭で解決策を見つける
  • この記事のために、オプション番号2と一緒に行きましょう.
    しばらくして、あなたは、記事のパターンについては、アダプタのパターンについては、すぐにそれを使用するのに最適な機会だと気づいた.
    XMLをJSONに変換するアダプタークラスを作成するだけです.
    ソース https://refactoring.guru/design-patterns/adapter
    アダプタはXMLオブジェクトを包み込んでJSONに変換しなければなりません.
    XMLクラスはラップされていることを知りません.
    簡単に十分に見える、これを実行しましょう!

    実装


    現在、クライアントは以下のようになります.
    「第三党株図書館」からの輸入株価データ
    クラスクライアント{
    パブリック関数main ()
    コンストXMLCount株= StockRank DataResプロバイダー.gettle allstricstocks ()
    これ.視覚化する

    パブリック関数Visualize ()
    可視化コード


    現在、在庫データとクライアントの2つのコンポーネントがあります.
    解析ライブラリを追加してみましょう.
    「第三党株図書館」からの輸入株価データ
    サードパーティ解析ライブラリからのインポート解析
    クラスクライアント{
    パブリック関数main ()
    コンストXMLCount株= StockRank DataResプロバイダー.gettle allstricstocks ()
    これ.視覚化する
    解析論.分析する

    //コードの残り

    これはエラーをスローしますanalyze 関数はJSONを受け入れる.
    これを修正するには、XMLをJSONに変換する必要があります.
    アダプタークラスを作成しましょう.
    クラスxml
    データコントラクト
    コンストラクタ
    これ.データを取得する

    パブリック関数GetRound JSON () {
    //XMLのJSONバージョンを返す
    //この記事の範囲外です


    アダプタークラスxml_data との助けを借りてget_json 関数は、XMLのJSONバージョンを返します.
    クライアントを更新しましょう
    「第三党株図書館」からの輸入株価データ
    サードパーティ解析ライブラリからのインポート解析
    「./XMLCountアダプター」からXmlTojsonAdapterをインポートする
    クラスクライアント{
    パブリック関数main ()
    コンストXMLCount株= StockRank DataResプロバイダー.gettle allstricstocks ()
    ( const jsonRank format =新しいXMLToJonsonAdapter ( XMLLINE株)
    これ.視覚化する
    解析論.解析する

    //コードの残り

    私たちのコードは最終的に動作し、アダプターパターンを実装するのに良い仕事です.
    デザインパターンを学習するためのキーは、それらを使用するときに知っていることです.
    このパターンを使用する機会について行きましょう.

    いつこのパターンを使用するか?


  • 互換性のないインターフェイス- 2つ以上のクラスを非互換インターフェイスで統合する場合は、アダプタパターンを使用して動作させることができます.

  • コード再利用-元のコードに変更を加えることなく、レガシーコードを再利用したい場合にアダプターパターンを使用します.
  • 利益


    この記事を通して、アダプタパターンの技術的側面をカバーしました.
    それでは、なぜこのパターンが役に立つのかを考えてみましょう.

  • 単一の責任原則-データ変換コードを分離するビジネスロジックから.

  • オープンクローズド原則-簡単には、既存のクライアントコードを破ることなく、新しいアダプタを導入することができます限り、彼らは一般的なインターフェイスで動作します.
  • 下方


    現実をヒットする時間、それはすべての太陽と虹ではない.
    アダプターパターンを使用する際のダウンサイドを使いましょう.

  • 複雑さ-余分なクラスとインターフェースの追加のため、コードの全体的な複雑さは増加します.サービス内のコードを変更する方が簡単です.しかし、心に留めておいて、最小抵抗の道は常にベストではない.

  • アダプターチェーン-時々多くの異なるアダプターが必要です.そして、アダプターチェーンを引き起こします.この種のコードは、単に非常に面倒で、デバッグするのが難しいです.
  • 結論


    私は質問をオフに終了したいと思います.
    この模様はどう思いますか.
    今まで自分でそれを使用して見ていますか?
    コメントであなたの答えを見るのを待つことができません.
    これはTamerlanでした、あなたがTwitterで私に続くならば、私はそれを評価して、私のブログをチェックしますsoftwareadventuring.com このようなコンテンツのために.
    今日は
  • アダプターパターンの定義と実装.
  • アダプタパターンを使用する場合.
  • アダプターパターンを使用する利点と欠点.
  • 読書ありがとう!

    更なる読書


    もしあなたがデザインパターンについてもっと知りたいならばDiving into Design Patterns . それは楽しさと魅力的な方法で、GOFの本で見つかったすべての23のデザインパターンを説明します.
    私が薦めるもう一つの本はHeads First Design Patterns: A Brain-Friendly Guide , これは楽しさと簡単に説明を読むことがあります.