Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Шаблонът за проектиране на Builder капсулира свойствата на даден обект и ви позволява да конструирате негово представяне. Този модел ви позволява да конструирате сложни обекти с различни свойства, въпреки че принадлежат към един и същи клас.

Типичен обектен клас съдържа атрибути, конструктори и методи. Моделът на конструктора ви позволява да извлечете логиката на конструиране от класа на обекта и да го поставите в класове, наречени конструктори. След това можете да използвате тези строителни класове, за да създадете различни варианти на един и същи обект.

Внедряване на модела Builder в Java

Добър пример за модела на строител е система за поръчка на пица, която позволява на клиентите да избират различни опции за гарнитура.

Продуктовият клас

Един подход е да направите конструктора интерфейс, но първо ще трябва да създадете продуктов клас. Продуктът в това примерно приложение е пица.

instagram viewer
публиченкласпица{
// Имоти
частенвътр Номер на поръчка;
частен низ тесто за пица;
частен низ топинг;

// гетери и сетери
публиченвътрgetOrderNumber(){
връщане Номер на поръчка;
}

публиченневалиденsetOrderNumber(вътр Номер на поръчка){
това.orderNumber = номер на поръчка;
}

публичен низ getPizzaDough(){
връщане тесто за пица;
}

публиченневалиденsetPizzaDough(Нанизано тесто за пица){
това.pizzaDough = pizzaDough;
}

публичен низ getTopping(){
връщане топинг;
}

публиченневалиденsetTopping(Наниз){
това.topping = топинг;
}
}

Класът на строителя

Пицата Java клас има три свойства и съответните им геттери и сетери, но няма конструкторски методи. Интерфейсът на конструктора ще ви позволи да създадете всеки аспект на обекта за пица поотделно. След това ще ви позволи да извлечете целия обект за пица.

публиченинтерфейсСтроител{
публиченневалиденcreatePizzaDough();
публиченневалиденcreateTopping();
публичен пица getPizza();
}

Приложението за примерна пица позволява на клиентите да поръчат всякакви топинги, като сирене, пеперони, лук или различни комбинации. Следователно една пица, която клиентът ще поръча, е сирене.

публиченкласCheesePizzaBuilderинструментиСтроител{
частен Пица пица;

публиченCheesePizzaBuilder(){
това.пица = нов Пица();
}

@Override
публиченневалиденcreatePizzaDough(){
това.pizza.setPizzaDough("тесто");
}

@Override
публиченневалиденcreateTopping(){
това.pizza.setTopping("Сирене");
}

@Override
публичен пица getPizza(){
връщанетова.пица;
}
}

Класът CheesePizzaBuilder имплементира интерфейса на Builder и го използва за създаване на нова пица със сирене. Това е едно представяне на обекта Pizza. Освен това прави това по начин, който е независим от класа Pizza.

Класът CheesePizzaBuilder не знае много за класа Pizza, той знае само това, което трябва да знае, за да изпълни своята функция. Той знае, че класът Pizza има свойство тесто и гарнитура и задава тези свойства на две конкретни стойности, които ще има всяка пица със сирене. Сега всеки път, когато приложението извика класа CheesePizzaBuilder, то ще създаде нова пица, която има топинг от сирене.

Директорската класа

Директорският клас е решаващ аспект от модела на строителя. Единствената цел на конкретния клас строител е да създаде конкретен обект. Това се постига чрез създаване на отделни части на обект.

Обаче строителните конкретни класове не знаят за алгоритъма. Никой от класовете по строители не знае да застрои тестото, преди да добави гарнитурата. Това е функцията на режисьорския клас.

публиченкласДиректор{
частен Конструктор pizzaBuilder;

публиченДиректор(Конструктор pizzaBuilder){
това.pizzaBuilder = pizzaBuilder;
}

публичен пица getPizza(){
връщанетова.pizzaBuilder.getPizza();
}

публиченневалиденнаправете пица(){
това.pizzaBuilder.createPizzaDough();
това.pizzaBuilder.createTopping();
}
}

Класът Director използва интерфейса на строителя, за да прави пици. Той е пазител на алгоритъма.

Предимствата от използването на шаблона за проектиране на Builder

Основното предимство на използването на шаблона за проектиране на строител е неговото свойство на капсулиране. Това е ключов аспект на софтуерното инженерство, тъй като помага при разработването на сигурни приложения.

Друго предимство на този модел на проектиране е неговият подход за конструиране на обекти. Тя ви позволява да създавате многоетапни процеси, където всяка стъпка е независима, което прави отстраняването на грешки по-лесно.