ノートモードを組み合わせた8つのデザインパターン

学校部門のショーを必要とします

ショーの需要に学校の教員を参照してください
学校の学部の構造を示すために、プログラミングを:需要は学校の教員のページを実証することである
組成物で、学校は多くの大学部門よりも、多くの大学があります。

ここに画像を挿入説明

学校の学部での問題への従来の解決策は、分析を示し、

  1. 学校のサブクラスとして見られ、大学は、学部が大学のサブクラスで、これは実際には階層的に組織の規模を立てています
  2. 実際に私たちの要件は以下のとおりです。学校の教員の組成物中のページを表示するには、このプログラムは、大学として、優れた運用管理を実現することはできませんので、学校では、多くの大学の部門よりも、多くの大学があります追加、削除、トラバーサルの部門
  3. ソリューション:学校、大学や部門が彼らの関係の間には継承はありません、組織構造と見られているが、ツリー構造は、あなたがより良い操作を管理することができます。=>複合モード

基本的な導入コンバインモード

基本的な導入

  1. 階層関係の「不可欠な部分」 - も表すためにツリー構造にターゲットグループのツリー構造、オブジェクトの組み合わせを作成し、全体的なモデルの一部として知られている複合モード(合成パターン)。

  2. オブジェクト・ツリー構造、部分的に使用され、全体的なレベルの組み合わせに基づいて、組合せパターン。

  3. デザインパターンのこのタイプは、構造モデルを属します。

  4. 一貫性のある組み合わせのモード、すなわち、個々のオブジェクトとオブジェクトの組み合わせへのアクセスを可能にする:組み合わせは、個々のオブジェクトと複合オブジェクト一貫した方法で顧客を可能にします

12.5原理組合せパターンのクラス図の
ここに画像を挿入説明
図の構造の原理の例示-すなわち(複合モードの役割と責任)

  1. 成分:これは、インタフェースオブジェクトの宣言、適切な組み合わせであり、実装するコンポーネントのサブコンポーネントにアクセスし、管理するための共通インターフェースのデフォルトの動作は、コンポーネントは、抽象クラスであるか、またはインタフェースがあり得ることを任意のクラス
  2. リーフ:とリーフノードの組み合わせ、リーフノードが子を持ちません
  3. 複合非リーフノード、例えば、削除増加(追加)として、コンポーネント・インタフェースサブ相関演算の実装サブコンポーネントを格納するための手段。

ここに画像を挿入説明

public abstract class OrganizationComponent {

	private String name; // 名字
	private String des; // 说明
	
	protected  void add(OrganizationComponent organizationComponent) {
		//默认实现
		throw new UnsupportedOperationException();
	}
	
	protected  void remove(OrganizationComponent organizationComponent) {
		//默认实现
		throw new UnsupportedOperationException();
	}

	//构造器
	public OrganizationComponent(String name, String des) {
		super();
		this.name = name;
		this.des = des;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDes() {
		return des;
	}

	public void setDes(String des) {
		this.des = des;
	}
	
	//方法print, 做成抽象的, 子类都需要实现
	protected abstract void print();
	
	
}

ソース解析組み合わせパターンは、JDKを設定しました

  1. Javaのコレクションクラス-HashMap複合モードの使用について

  2. コード分​​析
    ここに画像を挿入説明

  3. クラス図
    ここに画像を挿入説明

Notesと組み合わせモードの詳細

  1. クライアントが操作を簡素化。クライアントは、リーフノードの全部または一部として問題を検討することなく、同じテーマに直面する必要があります。
  2. それは、強力な拡張性を備えています。我々は、オブジェクトの組み合わせを変更したい場合は、我々は唯一の内部関係のレベルを調整する必要があり、クライアントが変更する必要はありません。
  3. 複雑な階層を作成するための簡単。クライアントは、簡単に複雑なツリー構造を作成するために、ノードまたは葉を追加した細部の組み合わせが重要ではありません。
  4. 必要性は、組織、または複合モードのために非常に適したツリー構造を有する処理対象物を横断するとき。
  5. これは、リーフノードならば、より高い抽象化を必要とし、多くの違いがある場合は、多くのそのようなメソッドとプロパティは同じではありません、組み合わせモードは、使用には適していません
公開された93元の記事 ウォン称賛31 ビュー30000 +

おすすめ

転載: blog.csdn.net/weixin_43866567/article/details/104784511