谈谈你对建造者模式的理解
每日一题-设计模式-谈谈你对建造者的理解【面试八股文】
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.和工厂模式的区别
建造者模式和工厂模式都是创建对象的设计模式,但它们有一些不同之处。
- 目的:建造者模式的主要目的是创建一个
复杂对象
,这个对象由多个部分组成,而工厂模式的主要目的是为了创建对象而不暴露创建逻辑。 - 使用方式:建造者模式使用
链式
调用来设置对象的各个属性,最后通过调用build()
方法来构建对象;而工厂模式通常使用一个工厂类来创建对象,通过调用工厂类的方法来获取对象的实例。 - 灵活性:建造者模式更加灵活,可以根据需要动态地设置对象的各个属性,而工厂模式在创建对象时通常只能使用工厂类提供的固定接口。
- 对象复杂度:建造者模式适用于创建复杂对象,可以通过设置各个属性来构建对象;而工厂模式适用于创建相对简单的对象。
总的来说,建造者模式更适合创建复杂对象,而工厂模式更适合创建简单对象。选择使用哪种模式取决于对象的复杂度和创建过程的灵活性需求。