デザインパターン15の組み合わせモード

バックグラウンド

まず、「部分全体」を理解しましょう。このような実生活での「部分全体」の関係も非常に一般的です。例:大学と学校、支店と本社、本と本棚など。

ソフトウェア開発では、単純なオブジェクトと複合オブジェクトを処理する必要があります。結合モードを使用して、単一オブジェクトと複合オブジェクトを一貫して処理できます。クライアントは、それが単一オブジェクトであるか複合オブジェクトであるかを知る必要はありません。と呼ばれる。この汎用性により、クライアントコードが大幅に削減されます。

上記の紹介はより抽象的なですか?心配しないで、見下ろしてください。

コンビネーションモードとは

「「

オブジェクトをツリー構造に構成して、部分全体の階層を表します。Compositeを使用すると、クライアントは個々のオブジェクトとオブジェクトの構成を均一に扱うことができます。オブジェクトの使用は一貫しています。)

組み合わせモードは主に3つの要素で構成されています。

「「
  • 抽象コンポーネント(コンポーネント)の役割:その主な機能は、リーフコンポーネントとブランチコンポーネントのパブリックインターフェイスを宣言し、それらのデフォルトの動作を実装することです。

  • リーフコンポーネント(リーフ)ロール:コンポジション内のリーフノードオブジェクトであり、子ノードはなく、抽象コンポーネントロールで宣言されたパブリックインターフェイスを実装するために使用されます。

  • ブランチコンポーネント(コンポジット)の役割:組み合わせのブランチノードオブジェクトであり、子ノードがあります。抽象コンポーネントの役割で宣言されたインターフェースを実装し、その主な機能は、通常はAdd()、Remove()、GetChild() メソッドを含むサブコンポーネントを格納および管理 することです。

複合モードの構造図は次のとおりです。

コンビネーションモード

コード

成分

複合

テストコード:

このテストコードは何をしますか?Leafコンテンツをトラバースするために使用します。

トラバース

テスト結果は次のとおりです。

树叶Lvshen1:被访问!
树叶Lvshen2:被访问!
树叶Lvshen3:被访问!

コンビネーションモードを考える

上記のコードに関しては、複合オブジェクトLeafである単一Compositeオブジェクトです。クライアントにとって、いわゆるComponent全体と部分の間に違いはありません。Compositeそれはそれ自体をロードすることができLeaf、満たされるために必要なのはコードのセットだけです。

結合モードを使用した後、ブランチ(複合)ノードまたはリーフ(リーフ)ノードを追加する場合、簡単であることがわかりますか?親ノードを見つけるだけです。拡張が非常に簡単で、原則に準拠しています。開閉の。将来のメンテナンスに非常に役立ちます。

では、いつ使用するのでしょうか。

開発では、ツリーメニュー、ファイルとフォルダの管理など、「部分から全体」のシーンを表示する必要がある場合は、複合モードを使用できます。

また、マネジメントシステムを開発する必要がある場合は、人事ランク関係の開発が必要になる場合があります。たとえば、ゼネラルマネージャー-部門マネージャー-従業員のツリー構造。

eコマース配信システムでは、オンラインとオフラインの関係を表示する必要があります。コンビネーションモードも使用できます。

 

過去におすすめ

QRコードをスキャンして、よりエキサイティングになります。または、WeChatLvshen_9を検索すると、返信してバックグラウンドで情報を取得できます

  1. 回复"java" 获取java电子书;

  2. 回复"python"获取python电子书;

  3. 回复"算法"获取算法电子书;

  4. 回复"大数据"获取大数据电子书;

  5. 回复"spring"获取SpringBoot的学习视频。

  6. 回复"面试"获取一线大厂面试资料

  7. 回复"进阶之路"获取Java进阶之路的思维导图

  8. 回复"手册"获取阿里巴巴Java开发手册(嵩山终极版)

  9. 回复"总结"获取Java后端面试经验总结PDF版

  10. 回复"Redis"获取Redis命令手册,和Redis专项面试习题(PDF)

  11. 回复"并发导图"获取Java并发编程思维导图(xmind终极版)

もう1つ:[マイベネフィット]をクリックして、さらに驚きを持ってください。

 

おすすめ

転載: blog.csdn.net/wujialv/article/details/109483356