Как стать автором
Обновить

Комментарии 6

Смешались в кучу кони, люди и залпы тысячи орудий. В одну кучу оказались свалены средства языка и интерфейсы для реализации патернов, примеры реализации паттернов в фреймворке, потроха фреймворка, кривая копипаста («назначение паттерна (\w+) из GOF»), кривые примеры кода… Непонятно, кому статья вообще предназначается: тем, кто знает GOF, рассказ про банальный yield скучен; не знающий паттернов новичок ничего не разберёт, потому что человеческих объяснений нет.

Как я уже сказал в платформе .NET абстракцию наблюдатель реализуют делегаты. Для более удобной работы с делегатами в C# используются события. В следующем примере будем их использовать:

За такой код руки отрывать надо.

1. Вы прозевали ключевое слово event. Это не бесполезная декорация, а гарантия адекватной инкапсуляции.
2. Вы нарушили рекомендации к оформлению паттерна события: у вас нет аргументов sender и EventArgs.
3. Вы создали бесполезный тип делегата, эквивалентный стандартному Action. Вообще, должны были использовать EventHandler.
«3. Вы создали бесполезный тип делегата, эквивалентный стандартному Action. Вообще, должны были использовать EventHandler. „

Можно вообще справа от += поставить имя метода с подходящей сигнатурой, остальное разрезолвит компилятор.
По моему тема уже сотни раз пережевана, статья хорошая но нового в себе ничего не несет.
«Метод Activator.CreateInstance в сочетании с информацией о типах реализует абстрактную фабрику классов». Нууу, вообще это средство рефлексии, а не паттерн. Для реализации паттерна надо иметь класс/интерфейс абстрактной фабрики и её реализции.

И у меня язык не поворачивается назвать System.Convert фабрикой.
при каждой итерации создается объект итератор

Нет
Имелось в виду 3 цикла 3 итератора.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации