События и делегаты. Какой шаблон проектирования?

#c# #design-patterns

#c# #шаблоны проектирования

Вопрос:

Изучая события и делегатов, я не могу не думать о шаблоне проектирования Observer.

Я вроде как новичок как в C #, так и в шаблонах проектирования. При использовании событий и делегатов, скажем, для запуска события из дочерней формы и его получения родительским, является ли это шаблоном проектирования наблюдателя?

В каких других шаблонах проектирования используются события и делегаты?

Мне было бы интересно узнать о других «вещах» (извините за отсутствие терминологии) в .NET, основанных на общих шаблонах проектирования, таких как шаблоны из The Gang of Four .

Я думаю, что легче понять примеры кода и пояснения к таким темам, если вы можете связать это с шаблоном. Лично в любом случае.

Спасибо.

Ответ №1:

это шаблон проектирования наблюдателя?

ДА. События — это, по сути, специфичная для языка реализация шаблона проектирования observer. Это было сочтено достаточно полезным для встраивания непосредственно в язык в C #.

Многие шаблоны проектирования могут быть написаны с использованием делегатов на C #, но это скорее детали реализации, чем сам шаблон. Например, шаблон посетителя и шаблон команды могут быть реализованы (довольно элегантно) с помощью делегатов.

Ответ №2:

Вы правы — события / делегаты действительно являются реализацией шаблона наблюдателя.

Было сказано, что шаблон является первоклассным гражданином .NET framework.

Помимо наблюдателя, конечно, есть итератор (всякий раз, когда вы используете foreach и IEnumerable IEnumarable<T> ).