Многоадресные делегаты реализуют шаблон 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, если вы по какой-то причине не хотите отложить выполнение метода. У меня никогда не было этого требования, но это не значит, что оно не могло быть полезным. Если бы у вас был сценарий, в котором один класс отвечал за "подготовку рецепта", а другой за "приготовление рецепта", я думаю, это может быть полезно. Однако даже тогда вы будете ограничены использованием только методов с одинаковой сигнатурой. Это только мое мнение, хотя.

Другие вопросы по тегам