Рубрики
Без рубрики

Шаблон проектирования Строителя

Что это? Конструктор – это шаблон творческого проектирования, который используется для создания сложного объекта из си… С тегами ооп, java, дизайн программного обеспечения, архитектура.

Что это? Конструктор – это шаблон творческого проектирования, который используется для создания сложного объекта из простых объектов с использованием пошагового подхода

Аналогия с Реальным Миром: Если вы когда-либо были на веб-сайте Tesla, вы, должно быть, видели, что у них есть пошаговый способ выбора автомобиля, который начинается с базовой модели, и пользователь может продолжать добавлять функции по своему усмотрению. Это можно сделать в коде, развернув конструктор и имея все возможные комбинации, но что, если будет введена новая функция.

Решение Ответ – шаблон проектирования конструктора. Шаблон построения предполагает, что вы извлекаете код построения объекта из его собственного класса и перемещаете его в отдельные объекты, называемые построителями. Вместо того, чтобы выдвигать конструктор для обработки всех случаев, мы строим автомобиль, используя функции, выбранные пользователем.

Пример кода:

public class Director {
    BuilderInterface myBuilder;

    public void construct(BuilderInterface builder) {
        myBuilder = builder;
        myBuilder.buildBody();
        myBuilder.insertWheels();
        myBuilder.addHeadlights();
    }
}


public class Product {
    private LinkedList parts;

    public Product () {
        parts = new LinkedList();
    }

    public void add(String part) {
        parts.addLast(part);
    }

    public void show() {
        System.out.println("\n Product completed as below");

        for(int i = 0; i < parts.size(); i++)
            System.out.println(parts.get(i));
    }
}

public class Client {
    public static void main(String [] args) {
        System.out.println("***Builder Pattern Demo***\n");

        Director director = new Director();

        BuilderInterface carBuilder = new Car();
        BuilderInterface motorBuilder = new MotorCycle();

        // making a car
        director.construct(carBuilder);
        Product p1 = carBuilder.getVehicle();
        p1.show();

        // making a motorcycle
        director.construct(motorBuilder);
        Product p2 = motorBuilder.getVehicle();
        p2.show();
    }
}

interface BuilderInterface {
    void buildBody();
    void insertWheels();
    void addHeadlights();
    Product getVehicle();
}

class Car implements BuilderInterface {
    private Product product = new Product();

    @Override
    public void buildBody() {
        product.add("This is a body of a car");
    }

    @Override
    public void insertWheels() {
        product.add("4 wheels are added");
    }

    @Override
    public void addHeadlights() {
        product.add("2 headlights are added");
    }

    @Override
    public Product getVehicle() {
        return product;
    }
}

class MotorCycle implements BuilderInterface
{
    private Product product = new Product();

    @Override
    public void buildBody() {
        product.add("This is a body of a Motorcycle");
    }

    @Override
    public void insertWheels() {
        product.add("2 wheels are added");
    }

    @Override
    public void addHeadlights()  {
        product.add("1 Headlight has been added");
    }

    @Override
    public Product getVehicle() {
        return product;
    }
}

Преимущество:

  • Это обеспечивает четкое разделение между конструкцией и представлением объекта.
  • Это обеспечивает лучший контроль над процессом строительства.
  • Он поддерживает изменение внутреннего представления объектов.
  • Принцип единой ответственности.

недостатки

  • Сложность кода возрастает.

Ссылка на Github: Шаблон дизайна конструктора репозитория Github

Оригинал: “https://dev.to/amrindersinghdev/builder-design-pattern-41d6”