0
点赞
收藏
分享

微信扫一扫

特殊文本文件

椰果玩安卓 2024-02-23 阅读 15

主要概念

以下是建造者模式的一般结构和关键参与者:

代码实例

下面是一个简单的Java示例,演示了如何使用建造者模式来构建一辆汽车:

// 产品
class Car {
    private String make;
    private String model;
    private int year;

    public Car(String make, String model, int year) {
        this.make = make;
        this.model = model;
        this.year = year;
    }

    // Getters
    public String getMake() { return make; }
    public String getModel() { return model; }
    public int getYear() { return year; }
}

// 建造者接口
interface CarBuilder {
    CarBuilder setMake(String make);
    CarBuilder setModel(String model);
    CarBuilder setYear(int year);
    Car build();
}

// 具体建造者
class CarBuilderImpl implements CarBuilder {
    private Car car;

    public CarBuilderImpl() {
        this.car = new Car("", "", 0);
    }

    @Override
    public CarBuilder setMake(String make) {
        car.make = make;
        return this;
    }

    @Override
    public CarBuilder setModel(String model) {
        car.model = model;
        return this;
    }

    @Override
    public CarBuilder setYear(int year) {
        car.year = year;
        return this;
    }

    @Override
    public Car build() {
        return car;
    }
}

// 指导者
class CarDirector {
    private CarBuilder builder;

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

    public Car construct(String make, String model, int year) {
        return builder.setMake(make)
                      .setModel(model)
                      .setYear(year)
                      .build();
    }
}

// 客户端
public class BuilderPatternExample {
    public static void main(String[] args) {
        CarBuilder builder = new CarBuilderImpl();
        CarDirector director = new CarDirector(builder);

        Car car = director.construct("Toyota", "Camry", 2022);
        System.out.println("Car: " + car.getMake() + " " + car.getModel() + " " + car.getYear());
    }
}

这个示例展示了一个简单的汽车建造者模式。在这个示例中,CarBuilder负责构建汽车对象的具体部分,而CarDirector负责指导建造者如何构建汽车对象。

主要适用场景

优缺点比较

优点:

  • 使用建造者模式可以使客户端不必知道产品内部组成的细节。
  • 具体的建造者类之间是相互独立的,这有利于系统的扩展。
  • 具体的建造者相互独立,因此可以对建造的过程逐步细化,而不会对其他模块产生任何影响。

缺点:

  • 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
  • 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。

 

举报

相关推荐

0 条评论