/* * Created by: Mo * Created: Friday, July 06, 2007 */ using System; using System.Collections.Generic; namespace DesignPatterns.Observer { public class Mo : ISubject { #region Constructors public Mo( ) : this( new List< IObserver >( ) ) {} public Mo( IList< IObserver > concernedRelatives ) { _concernedRelatives = concernedRelatives; LookAtCuteGirl += delegate { OnLookedAtCuteGirl( ); }; } #endregion #region Public Methods public event EventHandler LookAtCuteGirl; public void Add( IObserver observer ) { _concernedRelatives.Add( observer ); } public void Remove( IObserver observer ) { _concernedRelatives.Remove( observer ); } #endregion #region Private Fields private IList< IObserver > _concernedRelatives; #endregion #region Private Methods private void OnLookedAtCuteGirl( ) { foreach ( IObserver relative in _concernedRelatives ) { relative.Update( ); } } #endregion } }