目录
应用场景
实现计算机的组装:用户去购买计算机时可以根据自己的需要选购计算机的CPU、内存条、显卡、主板、硬盘、显示器、键盘、鼠标等各个配件,用建造者模式解决这个问题。
建造者模式原理图
代码
Computer类
package lad;
public class Computer {
private String CPU;
private String Storage;
private String DisplayCard;
private String Mainboard;
private String Disc;
private String DisplayDevice;
private String Keyboard;
private String Mouse;
public String getCPU() {
return CPU;
}
public void setCPU(String CPU) {
this.CPU=CPU;
}
public String getStorage() {
return Storage;
}
public void setStorage(String Storage) {
this.Storage=Storage;
}
public String getDisplayCard() {
return DisplayCard;
}
public void setDisplayCard(String DisplayCard) {
this.DisplayCard=DisplayCard;
}
public String getMainboard() {
return Mainboard;
}
public void setMainboard(String Mainboard) {
this.Mainboard=Mainboard;
}
public String getDisc() {
return Disc;
}
public void setDisc(String Disc) {
this.Disc=Disc;
}
public String getDisplayDevice() {
return DisplayDevice;
}
public void setDisplayDevice(String DisplayDevice) {
this.DisplayDevice=DisplayDevice;
}
public String getKeyboard() {
return Keyboard;
}
public void setKeyboard(String Keyboard) {
this.Keyboard=Keyboard;
}
public String getMouse() {
return Mouse;
}
public void setMouse(String Mouse) {
this.Mouse=Mouse;
}
public String toString() {
return "CPU:"+CPU+"\n内存条:"+Storage+"\n显卡:"+DisplayCard+
"\n主板:"+Mainboard+"\n硬盘:"+Disc+"\n显示器:"+DisplayDevice+
"\n键盘:"+Keyboard+"\n鼠标:"+Mouse;
}
}
ComputerBuilder类
package lad;
public abstract class ComputerBuilder {
Computer computer=new Computer();
public abstract void buildCPU();
public abstract void buildStorage();
public abstract void buildDisplayCard();
public abstract void buildMainBoard();
public abstract void buildDisc();
public abstract void buildDisplayDevice();
public abstract void buildKeyboard();
public abstract void buildMouse();
public Computer getComputer() {
return computer;
}
}
Designer类
package lad;
public class Designer {
public ComputerBuilder com;
public Designer(ComputerBuilder com) {
this.com=com;
}
public Computer construct(){
com.buildCPU();
com.buildDisc();
com.buildDisplayCard();
com.buildDisplayDevice();
com.buildKeyboard();
com.buildMainBoard();
com.buildMouse();
com.buildStorage();
return com.getComputer();
}
}
DesignA类
package lad;
public class DesignA extends ComputerBuilder{
@Override
public void buildCPU() {
// TODO Auto-generated method stub
getComputer().setCPU("cpu1号");
}
@Override
public void buildStorage() {
// TODO Auto-generated method stub
getComputer().setStorage("内存条1号");
}
@Override
public void buildDisplayCard() {
// TODO Auto-generated method stub
getComputer().setDisplayCard("显卡1号");
}
@Override
public void buildMainBoard() {
// TODO Auto-generated method stub
getComputer().setMainboard("主板1号");
}
@Override
public void buildDisc() {
// TODO Auto-generated method stub
getComputer().setDisc("硬盘1号");
}
@Override
public void buildDisplayDevice() {
// TODO Auto-generated method stub
getComputer().setDisplayDevice("显示器1号");
}
@Override
public void buildKeyboard() {
// TODO Auto-generated method stub
getComputer().setKeyboard("键盘1号");
}
@Override
public void buildMouse() {
// TODO Auto-generated method stub
getComputer().setMouse("鼠标");
}
}
Test类
package lad;
public class Test {
public static void main(String []args) {
DesignA a=new DesignA();
Designer designer = new Designer(a);
Computer com=designer.construct();
System.out.println("电脑的A组装方案:");
System.out.print(com.toString());
}
}