用户国营 发表于 2024-11-29 22:58:45

创建型模式-建造者模式

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

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



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



[*]优点
分离复杂构建过程与表示:提高代码的清楚性和可维护性。
易于扩展:可以通过添加新的具体建造者来扩展创建流程。
细节控制:通过指挥者可以按特定步调控制产品的创建次序。
[*]缺点
生成器类的数量大概会增加,增加代码复杂度。
不适用于构造过程过于简单的场景。
代码实现示例
假设要创建一辆汽车,每辆车由车轮、发动机、车身等部分组成。
// 产品类
public class Car {
    private String engine;
    private String wheels;
    private String body;

    // Getter 和 Setter
    public void setEngine(String engine) {
      this.engine = engine;
    }

    public void setWheels(String wheels) {
      this.wheels = wheels;
    }

    public void setBody(String body) {
      this.body = body;
    }

    @Override
    public String toString() {
      return "Car ";
    }
}
// 抽象建造者
public interface CarBuilder {
    void buildEngine();
    void buildWheels();
    void buildBody();
    Car getCar(); // 返回建造好的产品
}
// 具体建造者
public class SportsCarBuilder implements CarBuilder {
    private Car car;

    public SportsCarBuilder() {
      this.car = new Car();
    }

    @Override
    public void buildEngine() {
      car.setEngine("V8 Engine");
    }

    @Override
    public void buildWheels() {
      car.setWheels("Sports Wheels");
    }

    @Override
    public void buildBody() {
      car.setBody("Sleek Sports Body");
    }

    @Override
    public Car getCar() {
      return car;
    }
}
// 指挥者
public class Director {
    private CarBuilder builder;

    public Director(CarBuilder builder) {
      this.builder = builder;
    }

    public Car constructCar() {
      builder.buildEngine();
      builder.buildWheels();
      builder.buildBody();
      return builder.getCar();
    }
}
//客户端测试
public class Main {
    public static void main(String[] args) {
      // 创建具体建造者
      CarBuilder sportsCarBuilder = new SportsCarBuilder();

      // 指挥者控制构建过程
      Director director = new Director(sportsCarBuilder);

      // 构建产品
      Car sportsCar = director.constructCar();

      // 输出结果
      System.out.println(sportsCar);
    }
}
建造者模式适用场景



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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 创建型模式-建造者模式