推进网站集约化建设,网页浏览器的缩写,学校网站建设的软件环境,聊城设计网站构建者模式#xff08;Builder#xff09;
定义
将一个复杂对象的构建与其表示分离#xff0c;使得同样的构建过程可以创建不同的表示
使用场景
主要角色
产品 Product建造者接口 Builder具体的建造者 Concrete Builder指挥者 Director:组织构建过程
示例代码
Data
p…构建者模式Builder
定义
将一个复杂对象的构建与其表示分离使得同样的构建过程可以创建不同的表示
使用场景
主要角色
产品 Product建造者接口 Builder具体的建造者 Concrete Builder指挥者 Director:组织构建过程
示例代码
Data
public class Computer {private String cpu;//必须private String ram;//必须private int usbCount;//可选private String keyboard;//可选private String display;//可选public Computer(String cpu, String ram) {this.cpu cpu;this.ram ram;}}public abstract class ComputerBuilder {public abstract void setUsbCount();public abstract void setKeyboard();public abstract void setDisplay();public abstract Computer build();
}public class LenovoComputerBuilder extends ComputerBuilder {private Computer computer;public LenovoComputerBuilder(String cpu, String ram) {computernew Computer(cpu,ram);}Overridepublic void setUsbCount() {computer.setUsbCount(4);}Overridepublic void setKeyboard() {computer.setKeyboard(联想键盘);}Overridepublic void setDisplay() {computer.setDisplay(联想显示器);}Overridepublic Computer build() {return computer;}
}public class MacComputerBuilder extends ComputerBuilder {private Computer computer;public MacComputerBuilder(String cpu, String ram) {computer new Computer(cpu, ram);}Overridepublic void setUsbCount() {computer.setUsbCount(2);}Overridepublic void setKeyboard() {computer.setKeyboard(苹果键盘);}Overridepublic void setDisplay() {computer.setDisplay(苹果显示器);}Overridepublic Computer build() {return computer;}
}public class ComputerDirector {public void makeComputer(ComputerBuilder builder){builder.setUsbCount();builder.setDisplay();builder.setKeyboard();}
}public class Client {public static void main(String[] args) {ComputerDirector director new ComputerDirector();ComputerBuilder builder new MacComputerBuilder(I5处理器, 三星125);director.makeComputer(builder);Computer macComputer builder.build();System.out.println(mac computer: macComputer.toString());ComputerBuilder lenovoBuilder new LenovoComputerBuilder(I7处理器, 海力士222);director.makeComputer(lenovoBuilder);Computer lenovoComputer lenovoBuilder.build();System.out.println(lenovo computer: lenovoComputer.toString());}
}mac computer:Computer(cpuI5处理器, ram三星125, usbCount2, keyboard苹果键盘, display苹果显示器)
lenovo computer:Computer(cpuI7处理器, ram海力士222, usbCount4, keyboard联想键盘, display联想显示器)