Я возвращаюсь назад и вперед между C# и Java в течение последних 8 лет.Используете ли вы шаблон шаблона шаблона в языках программирования с закрытием/делегатами/указателями функций?
Одна вещь, которая меня поразила, заключается в том, что я полностью прекратил использовать шаблон шаблона «Шаблонный метод» на C#. На самом деле, в C# я подумал об этом шаблоне как о борьбе с шаблоном.
http://en.wikipedia.org/wiki/Template_method_pattern
Возвращаясь к Java, я нахожу, что шаблон жив и здоров. Я все еще думаю, что это выглядит антикварным, но понимаю, что в java нет другого способа сделать это. Java тоже выглядит античным;)
Так как это все равно придет, почему это антипаттерн?
- Много раз он использует вашу иерархию наследования для «неправильных причин».
- Базовые классы имеют тенденцию к завалению всеми видами несвязанного кода.
- Это заставляет вас блокировать дизайн, часто довольно рано в процессе разработки. (Преждевременная блокировка во многих случаях)
- Изменение этого на более позднем этапе становится все труднее и труднее.
Таким образом, при закрытии/делегировании/указателях функций вы обычно передаете некоторую функцию вместо подкласса.
Итак, вернемся к вопросу:
Если ваш язык имеет закрытые участки/делегатов/функции, вы используете метод шаблона, и когда?
Не забудьте прочитать ваш ответ. Не могли бы вы привести пример того, где шаблон шаблона метода «абсолютно» лучший, особенно если связь хорошая? Только предполагаемое сцепление всегда плохо! – rpattabi
@ragu: Дело в том, что связь хорошая или плохая. Дело в том, необходимо ли это или нет. Если это необходимо, то ИМХО самый простой способ выразить это шаблонный метод. – dsimcha
Насколько я понимаю, вы пытаетесь ответить на вопрос в руке. Мой вопрос носит общий характер. Для меня сцепление в шаблоне шаблона - плохой побочный эффект. Какие примеры сцепления хороши? – rpattabi