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