【面试八股文】每日一题:谈谈你对建造者模式的理解

2023-08-24 12:09:06 浏览数 (1)

谈谈你对建造者模式的理解

每日一题-设计模式-谈谈你对建造者的理解【面试八股文】

1.什么是建造者模式

  建造者模式是一种创建型设计模式,它允许你创建复杂对象的步骤独立于对象本身。

  在Java中,建造者模式由一个包含多个方法的Builder类和一个需要构建的复杂对象类组成。Builder类负责设置复杂对象的各个部分,而复杂对象类则负责实际构建对象。

下面通过一个案例代码来演示下

代码语言:javascript复制
// 复杂对象类
@Data
public class Car {
    private String brand;
    private String model;
    private int year;
    
}

// Builder类
public class CarBuilder {
    private Car car;
    
    public CarBuilder() {
        car = new Car();
    }
    
    public CarBuilder setBrand(String brand) {
        car.setBrand(brand);
        return this;
    }
    
    public CarBuilder setModel(String model) {
        car.setModel(model);
        return this;
    }
    
    public CarBuilder setYear(int year) {
        car.setYear(year);
        return this;
    }
    
    public Car build() {
        return car;
    }
}

// 使用建造者模式创建一个Car对象
public class Main {
    public static void main(String[] args) {
        Car car = new CarBuilder()
                        .setBrand("Toyota")
                        .setModel("Camry")
                        .setYear(2020)
                        .build();
        
        System.out.println("Brand: "   car.getBrand());
        System.out.println("Model: "   car.getModel());
        System.out.println("Year: "   car.getYear());
    }
}

2.和工厂模式的区别

建造者模式和工厂模式都是创建对象的设计模式,但它们有一些不同之处。

  1. 目的:建造者模式的主要目的是创建一个复杂对象,这个对象由多个部分组成,而工厂模式的主要目的是为了创建对象而不暴露创建逻辑。
  2. 使用方式:建造者模式使用链式调用来设置对象的各个属性,最后通过调用build()方法来构建对象;而工厂模式通常使用一个工厂类来创建对象,通过调用工厂类的方法来获取对象的实例。
  3. 灵活性:建造者模式更加灵活,可以根据需要动态地设置对象的各个属性,而工厂模式在创建对象时通常只能使用工厂类提供的固定接口。
  4. 对象复杂度:建造者模式适用于创建复杂对象,可以通过设置各个属性来构建对象;而工厂模式适用于创建相对简单的对象。

总的来说,建造者模式更适合创建复杂对象,而工厂模式更适合创建简单对象。选择使用哪种模式取决于对象的复杂度和创建过程的灵活性需求。

0 人点赞