Надеюсь, это поможет.
тветствии с эффективной Java 2edПункт 2
шаблон телескопического конструктора, в котором вы предоставляете конструктору только обязательные параметры, другой - с одним необязательным параметром, третий - с двумя необязательными параметрами и т. д., что завершается конструктором со всеми необязательными параметрами.
Пример конструкторов класса, применяющих этот шаблон, заимствован изКогда бы вы использовали шаблон Builder?
кодовый набор 1а
Pizza(int size) { ... }
Pizza(int size, boolean cheese) { ... }
Pizza(int size, boolean cheese, boolean pepperoni) { ... }
Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon) { ... }
размертребуется параметр. сыр, пепперони и беконпо желанию параметры. Предположим, что я хотел бы предоставить конструктор, как показано ниже.
кодовый набор 1b
Pizza(int size) { ... }
Pizza(int size, boolean cheese) { ... }
Pizza(int size, boolean pepperoni) { ... }
Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon, int price, int) { ... }
Другим примером является то, что
кодовый набор 2
public AttributeKey(String key, Class<T> clazz)
public AttributeKey(String key, Class<T> clazz)
public AttributeKey(String key, Class<T> clazz, @Nullable T defaultValue, boolean isNullValueAllowed)
public AttributeKey(String key, Class<T> clazz, @Nullable T defaultValue, boolean isNullValueAllowed, @Nullable ResourceBundleUtil labels)
два последних примера Я далне соответствует характеристикам телескопического конструктора как сделал кодовый набор 1a
Включены ли кодовые наборы 1b и 2 в конструктор телескопирования? если нет, то как это называется?По сравнению с использованием Pattern Builder, который (между Builder и шаблоном кодового набора 1a, 2) обеспечивает больше преимуществ