Last updated
Last updated
Шаблоните за проектиране представляват решения на често срещани проблеми.
Шаблонът Builder спада към така наречените creational шаблони, като той предоставя възможност за създаване на сложни обекти без използването на много и различни експлицитни конструктори.
Нека разгледаме следния пример:
Нека обаче приемем, че само първите три атрибута са задължителни (ISBN, заглавие и автор). Това означава, че всеки път, когато създаваме обекти от този клас, ще предаваме нулева стойност ако даден параметър липсва:
Един от възможните подходи за избягване на предаване на нулеви параметри е използването на множество експлицитни конструктори:
Тук обаче не трябва да се забравя, че не може да съществуват конструктори с еднакви по брой и типове параметри – така например, не може да има конструктор по ISBN, заглавие, автор и година на издаване, и едновременно с това конструктор по ISBN, заглавие, автор и брой страници на книгата.
Как би изглеждал класът Book с използване на шаблона Builder:
Необходимо е да се обърне внимание, че конструкторът на класа Book е частен, т.е. е невъзможно създаването на обект чрез неговото директно извикване. Създаването на обектите задължително минава през извикването на Builder.
Тогава създаването на двата обекта от примера по-горе ще изглежда по следния начин:
Със сигурност използването на шаблон Builder води до писане на повече код, но той е по-лесно читаем и проекта става по-гъвкав.
Множеството параметри от конструктора се редуцират и създаването на обекти се свежда до каскадно извикване на методи за отделните параметри. По този начин се избягва предаването на нулеви стойности за атрибутите, които не са задължителни.
Създаването на обекти се управлява от едно място което създава сигурност в проектирането на сафтуера.