JAva設計モードの構築者モード(3)


ビルダーモード:
作成モードに属し、以前のファクトリモードと似ています.両者を比較すると、コンストラクタモードで作成されるオブジェクトは複雑なオブジェクトであり、ファクトリモードで作成されるオブジェクトは単純な単一オブジェクトです.コンストラクタモードは、流水線のように、さまざまな部品を一定の順序で完全なオブジェクトに組み立てることができます.例えば、簡単なパソコンは、マザーボード、cpu、ディスプレイで構成されています.そして、パソコンを組み立てるには、まずマザーボードを装着し、CPUを装着し、最後にディスプレイを装着する手順に従います.
このとき、私たちはコンストラクタモデルによってこのステップを制御します.コードを見てください:
package com.pattern.build.builder;

public interface Computer {

	public void mainboard();//   

	public void cpu();// cpu

	public void screen();//   

	public void computor();//     

}

 
package com.pattern.build.builder;

public interface Board {//  

	public void board();
	
	
}

 
package com.pattern.build.builder;

public interface Cpu {//cpu

	public void cpu();
}

 
package com.pattern.build.builder;

public interface Screen {//  

	public void screen();
}

 
package com.pattern.build.builder;

public class LenovoComputer implements Computer{ //     

	private Screen screen;
	private Board board;
	private Cpu cpu;
	@Override
	public void screen() {
		this.screen = new Screen(){
			@Override
			public void screen() {
				System.out.println("lenovo screen");
			}
		};
	}

	@Override
	public void mainboard() {
		this.board = new Board(){
			@Override
			public void board() {
				System.out.println("lenovo board");
			}
		};
	}

	@Override
	public void cpu() {
		this.cpu = new Cpu(){
			@Override
			public void cpu() {
				System.out.println("lenovo cpu");
			}
		};
	}

	@Override
	public void computor() {
		screen.screen();
		board.board();
		cpu.cpu();
	}

	
	
}

 
package com.pattern.build.builder;

public class Builder {//   
	private Computer c;
	
	public Builder(Computer c){
		this.c = c;
	}
	
	public void build(){
		c.mainboard();//     
		
		c.cpu();//   CPU
		
		c.screen();//      
		
	}
	
}

 
package com.pattern.build.builder;

public class Client {

	public static void main(String[] args) {
		Computer c = new LenovoComputer();
		
		Builder b = new Builder(c);
		b.build();
		
		
		c.computor();
	}

}

簡単で、言うまでもなく、はっきりしています.