Back to questions
Middle
132
В чем заключается разница между шаблоном проектирования Builder и шаблоном проектирования Facade?
Answer from AI
sobes.tech AI
Шаблон Builder предназначен для поэтапного создания сложного объекта с возможностью гибкой настройки его параметров. Он отделяет процесс конструирования объекта от его представления, позволяя создавать разные варианты объекта с одинаковым процессом сборки.
Пример использования Builder:
public class Car {
private String engine;
private int wheels;
private String color;
private Car(Builder builder) {
this.engine = builder.engine;
this.wheels = builder.wheels;
this.color = builder.color;
}
public static class Builder {
private String engine;
private int wheels;
private String color;
public Builder setEngine(String engine) {
this.engine = engine;
return this;
}
public Builder setWheels(int wheels) {
this.wheels = wheels;
return this;
}
public Builder setColor(String color) {
this.color = color;
return this;
}
public Car build() {
return new Car(this);
}
}
}
Шаблон Facade предоставляет упрощённый интерфейс к сложной системе классов, библиотеке или фреймворку. Он скрывает сложность подсистемы и облегчает взаимодействие с ней.
Пример Facade:
public class ComputerFacade {
private CPU cpu;
private Memory memory;
private HardDrive hardDrive;
public ComputerFacade() {
cpu = new CPU();
memory = new Memory();
hardDrive = new HardDrive();
}
public void start() {
cpu.freeze();
memory.load(0, hardDrive.read(0, 1024));
cpu.execute();
}
}
Ключевые различия:
- Builder фокусируется на создании объекта шаг за шагом.
- Facade упрощает взаимодействие с уже существующей сложной системой.
Таким образом, Builder помогает создавать объекты, а Facade — упрощать использование подсистем.