События обычно используются в управляемой событиями системе, обычно той, которая управляется пользователем или в которой участвует пользователь. Таким образом, это хорошая идея, чтобы продолжать обработку короткой и сладкой.
Иногда события вызываются для того, чтобы выполнить некоторую обработку - применить форматирование, предложить пользователю, дать возможность вызывающему коду «настроить» происходящее. Это похоже на шаблон стратегии (http://en.wikipedia.org/wiki/Strategy_pattern).
Чтобы продвинуться дальше, шаблон стратегии - это хороший способ заключить с пользователем договор о том, как они могут высказать свое мнение о том, как должен происходить процесс. Например:
Допустим, вы пишете элемент управления сеткой, где пользователь может диктовать форматирование для каждой ячейки. С событиями:
- Пользователь должен подписаться на событие FormatCell
Что-то ближе к шаблону стратегии:
- Пользователь должен создать класс, реализующий ICellFormatter, с методом FormatCell и передать его в элемент управления grid - через свойство, параметр конструктора и т. Д.
Вы видите, что маршрут события «проще» для пользователя. Но лично я каждый раз предпочитаю второй метод - вы создаете четкий класс, задачей которого является работа с форматированием ячеек. В этом случае мне также кажется более очевидным, что метод FormatCell может выполнять некоторую степень обработки; вместо того, чтобы использовать Событие для выполнения какой-то задачи, которая кажется немного ленивой. (Paint - это «событие»? .. не совсем, это что-то запрошенное вашим кодом)