#c# #design-patterns
#c# #шаблоны проектирования
Вопрос:
Изучая события и делегатов, я не могу не думать о шаблоне проектирования Observer.
Я вроде как новичок как в C #, так и в шаблонах проектирования. При использовании событий и делегатов, скажем, для запуска события из дочерней формы и его получения родительским, является ли это шаблоном проектирования наблюдателя?
В каких других шаблонах проектирования используются события и делегаты?
Мне было бы интересно узнать о других «вещах» (извините за отсутствие терминологии) в .NET, основанных на общих шаблонах проектирования, таких как шаблоны из The Gang of Four .
Я думаю, что легче понять примеры кода и пояснения к таким темам, если вы можете связать это с шаблоном. Лично в любом случае.
Спасибо.
Ответ №1:
это шаблон проектирования наблюдателя?
ДА. События — это, по сути, специфичная для языка реализация шаблона проектирования observer. Это было сочтено достаточно полезным для встраивания непосредственно в язык в C #.
Многие шаблоны проектирования могут быть написаны с использованием делегатов на C #, но это скорее детали реализации, чем сам шаблон. Например, шаблон посетителя и шаблон команды могут быть реализованы (довольно элегантно) с помощью делегатов.
Ответ №2:
Вы правы — события / делегаты действительно являются реализацией шаблона наблюдателя.
Было сказано, что шаблон является первоклассным гражданином .NET framework.
Помимо наблюдателя, конечно, есть итератор (всякий раз, когда вы используете foreach
и IEnumerable
IEnumarable<T>
).