Отделите построение сложного объекта от его представления, чтобы один и тот же процесс построения мог создавать разные представления.
- Конструктор: задает абстрактный интерфейс для создания частей объекта продукта
- ConcreteBuilder: конструирует и собирает части продукта, реализуя интерфейс Builder. Определяет и отслеживает создаваемое им представление. Предоставляет интерфейс для извлечения продукта.
- Директор: создает объект с помощью интерфейса Builder
- Продукт: представляет собой сложный строящийся объект. Concrete Builder создает внутреннее представление продукта и определяет процесс, с помощью которого он собирается. Включает классы, которые определяют составные части, включая интерфейсы для сборки деталей в конечный результат.
public class Main { public static void main(String[] args) { Director director = new Director(); Builder b1 = new ConcreteBuilder1(); Builder b2 = new ConcreteBuilder2(); director.construct(b1); Product p1 = b1.getResult(); p1.show(); director.construct(b2); Product p2 = b2.getResult(); p2.show(); } } public class Director { public void construct(Builder builder) { builder.buildPartA(); builder.buildPartB(); } } public interface Builder { Product getResult(); void buildPartA(); void buildPartB(); } public class ConcreteBuilder1 implements Builder { private Product product = new Product(); @Override public Product getResult() { return product; } @Override public void buildPartA() { product.add("PartA"); } @Override public void buildPartB() { product.add("PartB"); } } public class ConcreteBuilder2 implements Builder { private Product product = new Product(); @Override public Product getResult() { return product; } @Override public void buildPartA() { product.add("PartX"); } @Override public void buildPartB() { product.add("PartY"); } } public class Product { private Listparts = new ArrayList<>(); public void show() { System.out.println("\nProduct Parts -------"); for (String part : parts) { System.out.println(part); } } public void add(String part) { parts.add(part); } }
Product Parts ------- PartA PartB Product Parts ------- PartX PartY
eidherjulian61/дизайн-шаблоны
Основные шаблоны Проектирования
ид – 27 сентября ・ 1 минута чтения
Оригинал: “https://dev.to/eidher/builder-patter-12jc”