创建型模式-建造者模式

打印 上一主题 下一主题

主题 989|帖子 989|积分 2967

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
建造者模式(Builder Pattern)是一种创建型计划模式,用于将一个复杂对象的构建过程与其表示分离,使得雷同的构建过程可以创建差异的表示。
  焦点头脑

将复杂对象的创建步调分解开来,通过一步步的构建来完成对象的创建,潜伏构建的具体细节,从而使构造过程更加灵活。
组成



  • Builder(抽象建造者)
    定义用于创建产品各部分的接口。
  • ConcreteBuilder(具体建造者)
    实现抽象建造者接口,完成产品的具体部分构造。
  • Product(产品类)
    表示复杂对象,包含多个组成部分。
  • Director(指挥者)
    调用建造者中的方法按特定次序来构建产品。
优缺点



  • 优点
    分离复杂构建过程与表示:提高代码的清楚性和可维护性。
    易于扩展:可以通过添加新的具体建造者来扩展创建流程。
    细节控制:通过指挥者可以按特定步调控制产品的创建次序。
  • 缺点
    生成器类的数量大概会增加,增加代码复杂度。
    不适用于构造过程过于简单的场景。
    代码实现示例
    假设要创建一辆汽车,每辆车由车轮、发动机、车身等部分组成。
  1. // 产品类
  2. public class Car {
  3.     private String engine;
  4.     private String wheels;
  5.     private String body;
  6.     // Getter 和 Setter
  7.     public void setEngine(String engine) {
  8.         this.engine = engine;
  9.     }
  10.     public void setWheels(String wheels) {
  11.         this.wheels = wheels;
  12.     }
  13.     public void setBody(String body) {
  14.         this.body = body;
  15.     }
  16.     @Override
  17.     public String toString() {
  18.         return "Car [engine=" + engine + ", wheels=" + wheels + ", body=" + body + "]";
  19.     }
  20. }
  21. // 抽象建造者
  22. public interface CarBuilder {
  23.     void buildEngine();
  24.     void buildWheels();
  25.     void buildBody();
  26.     Car getCar(); // 返回建造好的产品
  27. }
  28. // 具体建造者
  29. public class SportsCarBuilder implements CarBuilder {
  30.     private Car car;
  31.     public SportsCarBuilder() {
  32.         this.car = new Car();
  33.     }
  34.     @Override
  35.     public void buildEngine() {
  36.         car.setEngine("V8 Engine");
  37.     }
  38.     @Override
  39.     public void buildWheels() {
  40.         car.setWheels("Sports Wheels");
  41.     }
  42.     @Override
  43.     public void buildBody() {
  44.         car.setBody("Sleek Sports Body");
  45.     }
  46.     @Override
  47.     public Car getCar() {
  48.         return car;
  49.     }
  50. }
  51. // 指挥者
  52. public class Director {
  53.     private CarBuilder builder;
  54.     public Director(CarBuilder builder) {
  55.         this.builder = builder;
  56.     }
  57.     public Car constructCar() {
  58.         builder.buildEngine();
  59.         builder.buildWheels();
  60.         builder.buildBody();
  61.         return builder.getCar();
  62.     }
  63. }
  64. //客户端测试
  65. public class Main {
  66.     public static void main(String[] args) {
  67.         // 创建具体建造者
  68.         CarBuilder sportsCarBuilder = new SportsCarBuilder();
  69.         // 指挥者控制构建过程
  70.         Director director = new Director(sportsCarBuilder);
  71.         // 构建产品
  72.         Car sportsCar = director.constructCar();
  73.         // 输出结果
  74.         System.out.println(sportsCar);
  75.     }
  76. }
复制代码
建造者模式适用场景



  • 复杂对象的创建:当一个对象的创建涉及多个部分且需要特定次序时。
  • 多种构造方式:需要为同一产品创建差异的表示。
  • 隔离创建细节:需要潜伏产品的构建细节时。
  • 假如你需要进一步探索建造者模式的高级用法或其他计划模式,随时告诉我!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表