Мало мыслей по теме с тех пор, как задал вопрос:
Я считаю проблему скорее основанной на мнении, но есть некоторые плюсы и минусы обоих подходов:
Подход, основанный на событиях, прощена мой взгляд:
public class Observable
{
public event Action<object, object> OnStateChange;
public void Event()
{
// do something
// choose appropritate args
OnStateChange.Invoke(null, null);
}
/* versus ************************************************/
Observator[] observators;
public void InformObservators()
{
foreach (Observator observator in observators)
// choose appropritate args
observator.UpdateState(null, null);
}
}
public class Observator
{
public Observator(Observable observable)
{
observable.OnStateChange += UpdateState;
}
/* versus ************************************************/
public void UpdateState(object arg1, object arg2)
{
}
}
Как мы видим, шаблон Observator
не будет сильно отличаться в двух подходах, но класс Observable
будет иметь более простой метод информирования об изменениях, то есть Event
метод, который, на мой взгляд, легче поддерживать, чем InformObservers
из второго подхода.