Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface INotifyable
- {
- void Notify();
- }
- class Observed
- {
- public delegate void MyCoolDelegate();
- public event MyCoolDelegate SomethingHappened;
- List<INotifyable> _mySubscribers = new List<INotifyable>();
- public void DoSomethingCool()
- {
- foreach (var subscriber in _mySubscribers)
- {
- subscriber.Notify();
- }
- if (SomethingHappened != null)
- SomethingHappened();
- }
- public void SubscribeToMe(INotifyable subscriber)
- {
- _mySubscribers.Add(subscriber);
- }
- }
- class Observer1 : INotifyable
- {
- public Observer1(Observed observed)
- {
- observed.SomethingHappened += observed_SomethingHappened;
- observed.SubscribeToMe(this);
- }
- void observed_SomethingHappened()
- {
- Console.WriteLine("ZOMZ: I just saw something cool 1!");
- }
- public void Notify()
- {
- Console.WriteLine("ZOMZ: I just saw something cool 2!");
- }
- }
- class Observer2 : INotifyable
- {
- public Observer2(Observed observed)
- {
- observed.SomethingHappened += observed_SomethingHappened;
- observed.SubscribeToMe(this);
- }
- void observed_SomethingHappened()
- {
- Console.WriteLine("OMFG: I just saw something cool 1!");
- }
- public void Notify()
- {
- Console.WriteLine("OMFG: I just saw something cool 2!");
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Observed o = new Observed();
- Observer1 o1 = new Observer1(o);
- Observer2 o2 = new Observer2(o);
- o.DoSomethingCool();
- Console.Read();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement