Комментарии 6
Смешались в кучу кони, люди и залпы тысячи орудий. В одну кучу оказались свалены средства языка и интерфейсы для реализации патернов, примеры реализации паттернов в фреймворке, потроха фреймворка, кривая копипаста («назначение паттерна (\w+) из GOF»), кривые примеры кода… Непонятно, кому статья вообще предназначается: тем, кто знает GOF, рассказ про банальный yield скучен; не знающий паттернов новичок ничего не разберёт, потому что человеческих объяснений нет.
За такой код руки отрывать надо.
1. Вы прозевали ключевое слово
2. Вы нарушили рекомендации к оформлению паттерна события: у вас нет аргументов
3. Вы создали бесполезный тип делегата, эквивалентный стандартному
Как я уже сказал в платформе .NET абстракцию наблюдатель реализуют делегаты. Для более удобной работы с делегатами в C# используются события. В следующем примере будем их использовать:
За такой код руки отрывать надо.
1. Вы прозевали ключевое слово
event
. Это не бесполезная декорация, а гарантия адекватной инкапсуляции.2. Вы нарушили рекомендации к оформлению паттерна события: у вас нет аргументов
sender
и EventArgs
.3. Вы создали бесполезный тип делегата, эквивалентный стандартному
Action
. Вообще, должны были использовать EventHandler
.+22
По моему тема уже сотни раз пережевана, статья хорошая но нового в себе ничего не несет.
+2
«Метод Activator.CreateInstance в сочетании с информацией о типах реализует абстрактную фабрику классов». Нууу, вообще это средство рефлексии, а не паттерн. Для реализации паттерна надо иметь класс/интерфейс абстрактной фабрики и её реализции.
И у меня язык не поворачивается назвать System.Convert фабрикой.
И у меня язык не поворачивается назвать System.Convert фабрикой.
+2
при каждой итерации создается объект итератор
Нет
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
.NET и паттерны проектирования