新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
建造者模式注重的是部件构建的过程,意在通过一步一步地精确构造出一个复杂的对象。
为淮上等地区用户提供了全套网页设计制作服务,及淮上网站建设行业解决方案。主营业务为成都做网站、网站设计、外贸营销网站建设、淮上网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
可以将建造者模式理解为,假设我们有一个对象需要建立,这个对象是由多个组件(Component)组合而成,每个组件的建立都比较复杂,但运用组件来建立所需的组件对象非常简单,所以我们就可以将构建复杂组件的步骤与运用组件构建对象分离,从而构造出复杂的对象。
建造者模式包含如下角色:
举个????:
构造一台电脑,需要经过以下步骤:生产主机、生产显示器、生产键盘、生产鼠标。虽然不同的电脑需要的主机、显示器和键鼠型号不同,但不管怎样,它总是需要按照以上步骤来构建。对于这个例子,我们就可以使用生成器模式来生成一台电脑,他需要通过多个步骤来生成。代码如下。
产品类:
public class Computer {
private String keyboard;
private String mouse;
private String screen;
private String Master;
// 省略getter setter toString
}
抽象建造者类:(生产电脑的抽象类)
public abstract class ComputerBuilder {
protected Computer computer = new Computer();
public abstract void buildKeyboard();
public abstract void buildMouse();
public abstract void buildScreen();
public abstract void buildMaster();
public abstract Computer createComputer();
}
具体建造者类:(如惠普、戴尔)
public class HPComputerBuilder extends ComputerBuilder{
@Override
public void buildKeyboard() {
computer.setKeyboard("cherry 青轴机械键盘");
}
@Override
public void buildMouse() {
computer.setMouse("雷蛇竞技鼠标");
}
@Override
public void buildScreen() {
computer.setScreen("1920*1080 AOE 28寸曲面屏");
}
@Override
public void buildMaster() {
computer.setMaster("(i7,16g,512SSD,1060)的惠普主机");
}
@Override
public Computer createComputer() {
return computer;
}
}
public class DellComputerBuilder extends ComputerBuilder{
@Override
public void buildKeyboard() {
computer.setKeyboard("dell 青轴机械键盘");
}
@Override
public void buildMouse() {
computer.setMouse("dell 官方竞技鼠标");
}
@Override
public void buildScreen() {
computer.setScreen("1920*1080 dell 28寸曲面屏");
}
@Override
public void buildMaster() {
computer.setMaster("(i7,16g,1T SSD,1060)的戴尔主机");
}
@Override
public Computer createComputer() {
return computer;
}
}
指挥者类:(对组件进行组装并生成产品)
public class Director {
private ComputerBuilder computerBuilder;
public Director(ComputerBuilder computerBuilder) {
this.computerBuilder = computerBuilder;
}
public Computer constructComputer() {
computerBuilder.buildMaster();
computerBuilder.buildMouse();
computerBuilder.buildScreen();
computerBuilder.buildKeyboard();
return computerBuilder.createComputer();
}
}
指挥者类 Director 在建造者模式中具有很重要的作用,它用于指导具体构建者如何构建产品,控制调用先后次序,并向调用者返回完整的产品类。
测试类:
public class Client {
public static void main(String[] args) {
// 构造一台戴尔电脑
showComputer(new DellComputerBuilder());
// 构造一台惠普电脑
showComputer(new HPComputerBuilder());
}
private static void showComputer(ComputerBuilder builder) {
Director director = new Director(builder);
Computer computer = director.constructComputer();
System.out.println(computer);
}
}
优点:
缺点:
创建的对象较复杂,由多个部件构成,各部件面临着复杂的变化,但构件间的建造顺序是稳定的。
工厂方法模式注重的是整体对象的创建方式;而建造者模式注重的是部件构建的过程,意在通过一步一步地精确构造创建出一个复杂的对象。举个例子,如果要创建一台手机,直接产生一个CPU为天玑9000、运行内存为8G、容量为256G、屏幕材质为LCD的智能手机;而如果使用建造者模式,则需要组装CPU、内存、屏幕等部分。
抽象工厂模式实现对产品族的创建,采用抽象工厂模式则是不需要关心构建过程,只关心什么产品由什么工厂生产即可。建造者模式则是要求按照指定的蓝图建造产品,它的主要目的是通过组装零配件而产生一个新产品。
(140条消息) 23 种设计模式详解(全23种)_鬼灭之刃的博客-CSDN博客_设计模式
https://www.bilibili.com/video/BV1Np4y1z7BU