Согласно Effective Java 2ed Элемент 2
шаблон телескопического конструктора , в котором вы предоставляете конструктору только необходимые параметры, а другой - содин необязательный параметр, третий с двумя необязательными параметрами и т. д., завершающийся в конструкторе со всеми необязательными параметрами.
Пример конструкторов класса, применяющих этот шаблон, заимствован из Когда вы будете использовать шаблон Builder?
кодовый набор 1a
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) обеспечивает больше преимуществ