本文介绍: 想象你正在经营一家电脑装配店,客户可以选择定制自己的台式机。抽象建造者就像是一个装配说明书,列出了装机的所有步骤;具体建造者则按照说明书中每一步骤去实际安装主板、CPU和内存等配件;而导演者则是根据客户的订单要求,指挥建造者按正确的顺序进行装配。最后得到的就是一台完全符合客户需求的定制化台式电脑。
建造者模式(Builder Pattern)是一种创建型设计模式,它允许通过分步骤来构建复杂对象。该模式的核心原理是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现形式。
原理
在建造者模式中,通常有以下角色:
- 抽象建造者(Builder): 定义了创建产品对象的各个部分的接口,并定义了组装产品的具体方法。
- 具体建造者(ConcreteBuilder): 实现了抽象建造者接口,构造和装配各个部件以创建最终的产品对象。
- 产品(Product): 是被构建的复杂对象,包含多个可配置的部分。
- 导演者(Director,可选): 负责协调建造者的工作流程,调用建造者的相关方法来一步步完成产品的构建。
Java代码示例
// 抽象产品类
public abstract class Computer {
protected String motherboard;
protected String cpu;
protected String memory;
// 其他属性和方法...
public abstract void buildMotherboard(String motherboard);
public abstract void buildCpu(String cpu);
public abstract void buildMemory(String memory);
public abstract Computer getComputer();
}
// 具体产品类
public class DesktopComputer extends Computer {
@Override
public void buildMotherboard(String motherboard) {
this.motherboard = motherboard;
}
@Override
public void buildCpu(String cpu) {
this.cpu = cpu;
}
@Override
public void buildMemory(String memory) {
this.memory = memory;
}
@Override
public Computer getComputer() {
return this;
}
}
// 抽象建造者类
public abstract class ComputerBuilder {
protected Computer computer;
public ComputerBuilder() {
computer = new DesktopComputer(); // 或其他实现类
}
public abstract void buildMotherboard();
public abstract void buildCpu();
public abstract void buildMemory();
public Computer getComputer() {
return computer;
}
}
// 具体建造者类
public class HighEndDesktopBuilder extends ComputerBuilder {
@Override
public void buildMotherboard() {
computer.buildMotherboard("High End Motherboard");
}
@Override
public void buildCpu() {
computer.buildCpu("Intel Core i9");
}
@Override
public void buildMemory() {
computer.buildMemory("64GB RAM");
}
}
// 导演者类(可选)
public class Director {
private ComputerBuilder builder;
public Director(ComputerBuilder builder) {
this.builder = builder;
}
public Computer constructComputer() {
builder.buildMotherboard();
builder.buildCpu();
builder.buildMemory();
return builder.getComputer();
}
}
// 使用示例
public class Client {
public static void main(String[] args) {
ComputerBuilder builder = new HighEndDesktopBuilder();
Director director = new Director(builder);
Computer highEndPC = director.constructComputer();
System.out.println(highEndPC);
}
}
想象你正在经营一家电脑装配店,客户可以选择定制自己的台式机。抽象建造者就像是一个装配说明书,列出了装机的所有步骤;具体建造者则按照说明书中每一步骤去实际安装主板、CPU和内存等配件;而导演者则是根据客户的订单要求,指挥建造者按正确的顺序进行装配。最后得到的就是一台完全符合客户需求的定制化台式电脑。
应用场景
- 复杂对象的构建:当一个对象具有多个属性,且不同属性之间有不同的组合方式时,使用建造者模式可以灵活地控制创建过程。
- 需要生成不同结构或内容的对象系列:例如创建XML或JSON文档,或者创建不同配置选项的产品等。
- 需要解耦构造过程与表示过程:在不暴露内部细节的情况下,能独立改变产品的内部结构。
适用性
- 当一个对象的构建过程非常复杂,需要许多步骤并且各步骤间有一定的顺序关系时。
- 当希望用户只关注结果,而不关心构建过程以及具体的实现细节时。
- 当需要为对象的不同构造过程提供不同的表示时,即同一构建过程可以产生多种不同表现形式的产品。
原文地址:https://blog.csdn.net/weixin_44145894/article/details/135569122
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_57452.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。