Многоадресные делегаты реализуют шаблон Builder?
Является ли использование многоадресных делегатов подходящим способом реализации шаблона проектирования Builder?
Причина, по которой я спрашиваю, заключается в том, что моя концепция / понимание шаблона Builder - это набор методов, которые можно комбинировать / переупорядочивать, как блоки LEGO. Таким образом, у вас могут быть следующие методы:
void Shave(int StrokeCount) { ... }
void FeedTheDog(int Cups) { ... }
void MakeCoffee(int Cups) { ... }
void Shower(int Temperature) { ... }
... которые могут быть смешаны и сопоставлены /LEGO'd вместе, так что однажды утром вы позвоните:
Shower()
FeedTheDog()
MakeCoffee()
... другое утро:
Shower()
Shave()
FeedTheDog()
MakeCoffee()
... другое утро:
MakeCoffee()
FeedTheDog()
Shower()
(и т. д. и т. д. до бесконечности и до тошноты)
А поскольку многоадресные делегаты позволяют вам добавлять методы с одинаковой подписью к экземпляру делегата, и они будут срабатывать в том порядке, в котором вы их добавляете, здесь, похоже, существует семантическая связь (по моему мнению / с моим нынешним мышлением, тем не мение). Возможно, я ошибаюсь, поэтому и спрашиваю.
1 ответ
На самом деле я не вижу преимущества использования многоадресных делегатов для шаблона Builder, если вы по какой-то причине не хотите отложить выполнение метода. У меня никогда не было этого требования, но это не значит, что оно не могло быть полезным. Если бы у вас был сценарий, в котором один класс отвечал за "подготовку рецепта", а другой за "приготовление рецепта", я думаю, это может быть полезно. Однако даже тогда вы будете ограничены использованием только методов с одинаковой сигнатурой. Это только мое мнение, хотя.