JAVAの変換(C)デザインパターンビルダーデザインパターン

著作権:著作権https://blog.csdn.net/qq_21046965/article/details/90759886手順猿jwang

序文

      この章では、基本的なデザインパターンビルダーを説明します

方法

1.コンセプト

ただ、複雑なオブジェクトを作成するために非常に適していません前に、我々は簡単に見つけることができる最初の2つの設計パターンを学習した後、型モデルを作成します!だから、実際の生活の中で、いつもより複雑なオブジェクトのいくつかがあるでしょう。コンピュータ、そのモニター(モニター)、機械(シャーシ)、キーボード(鍵盤)のようなこのオブジェクトは、その独立した関連する属性たこれらの配列の不可欠な部分として、その不可欠な部分であり、そして組成物は注意を払う必要があり、我々は使用する必要がありますこの問題を解決するためのビルダーのデザインパターン。

Builderパターンの性質は、オブジェクトを作成するために相互接続され、(ビルダー)と別途組立(監督)を構築することです。

2.ビルダーデザインパターンの実装手順

1)準備

以下のような作品を作成します:

前記4つのエンティティクラスがあり、それぞれのコンピュータ(PC)モニター(ディスプレイ)、機械(シャーシ)、キーボード(鍵盤)

次のようにコンピュータのコードは次のとおりです。

package creator;

public class Computer {

	private Monitor monitor; //显示器
	private Machine machine; //主机
	private KeyBoard keyBoard; //键盘
	
	public Monitor getMonitor() {
		return monitor;
	}
	public void setMonitor(Monitor monitor) {
		this.monitor = monitor;
	}
	public Machine getMachine() {
		return machine;
	}
	public void setMachine(Machine machine) {
		this.machine = machine;
	}
	public KeyBoard getKeyBoard() {
		return keyBoard;
	}
	public void setKeyBoard(KeyBoard keyBoard) {
		this.keyBoard = keyBoard;
	}
}

前記表示のコードでは、3つのクラスコードの残りの部分のように、次のとおりです。

package creator;

public class Monitor {
	private String name;
	
	public Monitor(String name) {
		super();
		this.name = name;
	}

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

2)設計のコンストラクタ

以前とは異なり、この方法は、異なる複数のコンポーネントを構築可能な構成を有しています。別々の要素を構築するか、工場設計パターンと組み合わせて使用​​する方法。

次のように我々は、コンピュータビルダー・インタフェースを設定します。

package creator;

public interface ComputerBuilder {
     public Monitor builderMonitor();//创建显示器
     public Machine builderMachine();//创建主机
     public KeyBoard builderKeyBoard();//创建键盘
}

そして、このようヒューレット・パッカード(HP)として、建物のコンピュータ実装クラスを設計

package creator;

public class HPComputerBuilder implements ComputerBuilder {

	@Override
	public Monitor builderMonitor() {
		System.out.println("我是惠普显示器");
		return new Monitor("惠普"); //注意:此处可以结合工厂设计模式使用
	}

	@Override
	public Machine builderMachine() {
		System.out.println("我是惠普主机");
		return new Machine("惠普");
	}

	@Override
	public KeyBoard builderKeyBoard() {
		System.out.println("我是惠普键盘");
		return new KeyBoard("惠普");
	}

}

3)セットビルダ

私たちは、インターフェイスビルダーの設定しました:

package creator;

public interface ComputerDirector {
	public Computer createComputer();//组装电脑
}

次に、私たちは私たちのHPのコンピュータを組み立てるために、その実装クラスを設計します。

package creator;

public class HPComputerDirector implements ComputerDirector {

	private ComputerBuilder builder;

	public HPComputerDirector(ComputerBuilder builder) {
		this.builder = builder;
	}

	@Override
	public Computer createComputer() {
		Monitor monitor = builder.builderMonitor();
		Machine machine = builder.builderMachine();
		KeyBoard keyBoard = builder.builderKeyBoard();
		
		//组装电脑,可考虑组建顺序
		Computer computer = new Computer();
		computer.setMonitor(monitor);
		computer.setMachine(machine);
		computer.setKeyBoard(keyBoard);
		
		return computer;
	}

}

試験用のテストクラスの4)の調製

package creator;

public class Test {

	public static void main(String[] args) {
		ComputerDirector director = new HPComputerDirector(new HPComputerBuilder());
		
		Computer computer = director.createComputer();
		
		System.out.println(computer.getMonitor().getName());
	}

}

これは、複雑なオブジェクトの作成を完璧に実現です!

おすすめ

転載: blog.csdn.net/qq_21046965/article/details/90759886
おすすめ