В процессе написания руководств по кодированию для компании я рекомендовал использовать шаблон Builder из Effective Java вместо телескопических конструкторов.
Однако, подумав немного об этом, безусловно, более элегантным решением будет просто удалить класс построителя, а также удалить дополнительные конструкторы с необязательными аргументами.
Так что просто имейте один конструктор с необходимыми параметрами, обычные методы получения / установки и комментируйте код. При реализации просто создайте новый экземпляр объекта yr, затем установите значения.
Мое первоначальное мышление состояло в том, что вы избавились от путаницы относительно того, какие параметры являются необязательными, а какие - необходимыми; однако истинное преимущество заключается в использовании метода цепочки / свободного интерфейса.
Шаблон компоновщика имеет свои преимущества, когда вы создаете много новых экземпляров, так как ide может выполнять работу на ногах, а также при наличии множества (более 15) необязательных параметров. Однако стоит ли тратить дополнительное время на кодирование статического внутреннего класса, вы бы порекомендовали использовать компоновщик или это пустая трата времени?
Ответы:
Я склонен следовать шаблону, согласно которому конструкторы должны предоставлять все обязательные значения, необходимые для создания допустимого и согласованного объекта. Для необязательных значений я пытаюсь думать о том, каким должно быть наиболее распространенное значение по умолчанию, чтобы сеттеры использовались как можно меньше.
Если я обнаружу, что существует множество необязательных значений или что большая часть необязательных значений имеет тенденцию изменяться по сравнению с их значениями по умолчанию, то я буду использовать шаблон построителя (статический внутренний построитель или другой аналогичный дизайн).
Джош обычно дает чертовски хороший совет - лучшее, что мне нравится в нем, это то, что советы приходят из окопов, - он признает, что допустил ошибки при разработке частей Java, а Effective Java отчасти является своего рода «лекарством», так что разговаривать :-)
источник
Шаблон Builder Джоша Блоха, так же как и шаблон GoF Builder, предлагает способ создания неизменяемого объекта с большим количеством данных по умолчанию без длинных списков связанных конструкторов.
Если у вас «один конструктор с необходимыми параметрами, обычные методы получения / установки», тогда ваш объект больше не является неизменным. то есть. Вы можете изменить его еще долго после его создания.
Если это не проблема для вас, вам никогда не понадобился шаблон Builder. Если это проблема, то ваше решение имеет недостатки.
источник