欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 23种设计模式-创建型模式之建造者模式(Java版本)

23种设计模式-创建型模式之建造者模式(Java版本)

2025/4/23 19:22:54 来源:https://blog.csdn.net/DreamCollector/article/details/147319160  浏览:    关键词:23种设计模式-创建型模式之建造者模式(Java版本)

Java 建造者模式(Builder Pattern)详解

🧱 什么是建造者模式?

建造者模式用于将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。

适用于创建过程复杂、构造顺序稳定但组件变化的对象。


🧠 使用场景

  • 对象的构建过程复杂,涉及多个步骤
  • 创建对象需要一步步构造,顺序不可乱
  • 希望构建过程与表示解耦

🏗️ 模式结构

  • Builder(抽象建造者)
  • ConcreteBuilder(具体建造者)
  • Product(产品角色)
  • Director(指挥者)

✅ 示例:建造一个电脑

产品类

public class Computer {private String cpu;private String ram;private String storage;public void setCpu(String cpu) { this.cpu = cpu; }public void setRam(String ram) { this.ram = ram; }public void setStorage(String storage) { this.storage = storage; }@Overridepublic String toString() {return "Computer [CPU=" + cpu + ", RAM=" + ram + ", Storage=" + storage + "]";}
}

抽象建造者

public interface Builder {void buildCPU();void buildRAM();void buildStorage();Computer getResult();
}

具体建造者

public class GamingComputerBuilder implements Builder {private Computer computer = new Computer();public void buildCPU() {computer.setCpu("Intel i9");}public void buildRAM() {computer.setRam("32GB DDR5");}public void buildStorage() {computer.setStorage("1TB SSD");}public Computer getResult() {return computer;}
}

指挥者(Director)

public class Director {public void construct(Builder builder) {builder.buildCPU();builder.buildRAM();builder.buildStorage();}
}

客户端使用

public class Main {public static void main(String[] args) {Builder builder = new GamingComputerBuilder();Director director = new Director();director.construct(builder);Computer computer = builder.getResult();System.out.println(computer);}
}

🧩 优点

  • 封装构建过程,客户端只需关注产品即可
  • 构建过程稳定,解耦复杂逻辑
  • 易于扩展具体建造者,满足不同需求

⚠️ 缺点

  • 类数量增加
  • 不适用于构建过程简单的对象

🆚 与工厂模式区别

特点建造者模式工厂模式
主要关注构建过程创建对象本身
复杂程度更复杂(多个步骤)通常较简单
控制细节客户端可自定义构建细节客户端只能选择工厂返回对象

✅ 使用建议

当一个产品的构建步骤稳定但各部分实现变化频繁时(如文档生成器、UI 构建器等),建造者模式非常适用。

版权声明:

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

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

热搜词