Sobes.tech
Middle

Quelle est la différence entre le patron de conception Builder et le patron de conception Facade?

sobes.tech IA

Réponse de l'IA

Шаблон 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 — упрощать использование подсистем.