Skip to content

Instantly share code, notes, and snippets.

@jirkapenzes
Created January 10, 2013 12:57
Show Gist options
  • Save jirkapenzes/4501873 to your computer and use it in GitHub Desktop.
Save jirkapenzes/4501873 to your computer and use it in GitHub Desktop.
Very simple observer pattern
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Patterns.Observer
{
public interface IObserver
{
void Update();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Patterns.Observer
{
public abstract class Observable
{
private IList<IObserver> _observers;
public void AddObserver(IObserver observer)
{
_observers = _observers ?? new List<IObserver>();
_observers.Add(observer);
}
public void RemoveObserver(IObserver observer)
{
_observers = _observers ?? new List<IObserver>();
if (_observers.Contains(observer))
_observers.Remove(observer);
}
public void NotifyObservers()
{
_observers = _observers ?? new List<IObserver>();
foreach (var observer in _observers)
observer.Update();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment