您的位置:首页 > 汽车 > 新车 > 网络营销推广思路_如何新建政府门户网站建设_网络推广培训班哪家好_百度网盘客服人工电话95188

网络营销推广思路_如何新建政府门户网站建设_网络推广培训班哪家好_百度网盘客服人工电话95188

2025/5/25 18:31:24 来源:https://blog.csdn.net/NETChencs2/article/details/146304952  浏览:    关键词:网络营销推广思路_如何新建政府门户网站建设_网络推广培训班哪家好_百度网盘客服人工电话95188
网络营销推广思路_如何新建政府门户网站建设_网络推广培训班哪家好_百度网盘客服人工电话95188

建造者模式:将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。
核心思想:通过分步构建对象,避免构造函数参数过多,提高代码的可读性和灵活性。

假设你正在开发一个电脑定制系统,用户可以根据自己的需求选择不同的硬件配置(如CPU、内存、硬盘、显卡等)。电脑的配置组合非常复杂,如果使用传统的构造函数或Setter方法,会导致代码冗长且难以维护。建造者模式可以很好地解决这个问题。


1. 产品类 (Computer)

public class Computer {private String cpu;private String memory;private String storage;private String gpu;public void setCpu(String cpu) {this.cpu = cpu;}public void setMemory(String memory) {this.memory = memory;}public void setStorage(String storage) {this.storage = storage;}public void setGpu(String gpu) {this.gpu = gpu;}@Overridepublic String toString() {return "Computer{" +"cpu='" + cpu + '\'' +", memory='" + memory + '\'' +", storage='" + storage + '\'' +", gpu='" + gpu + '\'' +'}';}
}

2. 建造者接口 (ComputerBuilder)

public interface ComputerBuilder {void buildCpu();void buildMemory();void buildStorage();void buildGpu();Computer getComputer();
}

3. 具体建造者 (GamingComputerBuilderOfficeComputerBuilder)

游戏电脑建造者
public class GamingComputerBuilder implements ComputerBuilder {private Computer computer;public GamingComputerBuilder() {this.computer = new Computer();}@Overridepublic void buildCpu() {computer.setCpu("Intel i9");}@Overridepublic void buildMemory() {computer.setMemory("32GB DDR5");}@Overridepublic void buildStorage() {computer.setStorage("1TB SSD");}@Overridepublic void buildGpu() {computer.setGpu("NVIDIA RTX 4090");}@Overridepublic Computer getComputer() {return computer;}
}
办公电脑建造者
public class OfficeComputerBuilder implements ComputerBuilder {private Computer computer;public OfficeComputerBuilder() {this.computer = new Computer();}@Overridepublic void buildCpu() {computer.setCpu("Intel i5");}@Overridepublic void buildMemory() {computer.setMemory("16GB DDR4");}@Overridepublic void buildStorage() {computer.setStorage("512GB SSD");}@Overridepublic void buildGpu() {computer.setGpu("Integrated GPU");}@Overridepublic Computer getComputer() {return computer;}
}

4. 指挥者 (ComputerDirector)

public class ComputerDirector {private ComputerBuilder computerBuilder;public ComputerDirector(ComputerBuilder computerBuilder) {this.computerBuilder = computerBuilder;}public void constructComputer() {computerBuilder.buildCpu();computerBuilder.buildMemory();computerBuilder.buildStorage();computerBuilder.buildGpu();}public Computer getComputer() {return computerBuilder.getComputer();}
}

5. 客户端代码

public class ComputerBuilderDemo {public static void main(String[] args) {// 创建游戏电脑ComputerBuilder gamingBuilder = new GamingComputerBuilder();ComputerDirector gamingDirector = new ComputerDirector(gamingBuilder);gamingDirector.constructComputer();Computer gamingComputer = gamingDirector.getComputer();System.out.println("游戏电脑配置: " + gamingComputer);// 创建办公电脑ComputerBuilder officeBuilder = new OfficeComputerBuilder();ComputerDirector officeDirector = new ComputerDirector(officeBuilder);officeDirector.constructComputer();Computer officeComputer = officeDirector.getComputer();System.out.println("办公电脑配置: " + officeComputer);}
}

6. 输出

游戏电脑配置: Computer{cpu='Intel i9', memory='32GB DDR5', storage='1TB SSD', gpu='NVIDIA RTX 4090'}
办公电脑配置: Computer{cpu='Intel i5', memory='16GB DDR4', storage='512GB SSD', gpu='Integrated GPU'}

业务场景总结

  1. 问题:电脑配置复杂,直接使用构造函数或Setter方法会导致代码冗长且难以维护。

  2. 解决方案:使用建造者模式,将电脑的构建过程分解为多个步骤,并通过指挥者统一管理。

  3. 优点

    • 分离构建过程与表示,代码更清晰。

    • 支持灵活扩展,新增配置类型只需增加新的建造者。

    • 避免构造函数参数过多,提高代码可读性。


其他业务场景

  1. 订餐系统:用户可以选择不同的菜品组合(如主食、饮料、甜点),建造者模式用于构建订单。

  2. 文档生成:生成复杂的文档(如PDF、Word),建造者模式用于分步构建文档内容。

  3. 车辆制造:汽车的不同配置(如发动机、轮胎、内饰),建造者模式用于构建车辆对象。

建造者模式的核心思想是分步构建复杂对象,适用于需要灵活创建对象的场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com