-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsource.code
More file actions
30 lines (28 loc) · 2.37 KB
/
source.code
File metadata and controls
30 lines (28 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
packageunnecessaryof.creational.builder;
import org.testng.annotations.Test;
/**
* {@link java.lang.StringBuilder}
* <p>
* Шаблон строитель хороший выбор для проектирования классов, в которых статические методы генерации или конструкторы
* имеют большое число параметров, в особенности если параметры необязательны. Код клиента намного проще читать и
* писать с использованием Builder нежели чем традиционных конструктором и Builder более безопасны чем JavaBean.
* <p>
* <pre class="code">
* _____________________________________________________________________________
* _________|<i>JavaBeans</i> | <i>Telescoping constructor</i> | <i>Builder</i>|
* _________|-----------------|--------------------------------|---------------|
* Verbose__|-----------------|--------------------------------|---------------|
* Safety___|-----------------|--------------------------------|---------------|
* _________|------------------------------------------------------------------|
* </pre>
* <p>
* <strong>Pros:</strong>
* <ol>
* master changes 1
* <li>Позволяет удобно конструировать объекты с множеством необязательных параметров (альтернатива массивным конструкторам и javabean подходу), гибко управлять этими параметрами </li>
* <li>Позволяет отложить публикацию объекта, избежать неконсистентности, возможность создавать immutable реализации</li>
* <li>Могут использоваться для конструирования множества объектов</li>
* <li>Можно использовать vararg</li>
* <li>Можно автоматически устанавливать параметры (билдеры с предустановлеными параметрами, по сути, являются фабрикой)</li>
* <li>Билдер функциональный интерфейс. Его можно параметризовать с помощью generic</li>
* </ol>