观察者模式
2012-08-02 14:22
169 查看
using System; using System.Collections; using System.Collections.Generic; namespace Observer { public interface IObserver { void Update(Object obj); } public interface IObservable { void Register(IObserver anObserver); void UnRegister(IObserver anObserver); void NotifyObservers(Object obj); } public class People : IObservable { private string m_name; public string Name { get { return m_name; } set { m_name = value; } } private int m_age; public int Age { get { return m_age; } set { m_age = value; NotifyObservers(m_age); } } public void Print() { Console.WriteLine("Name:" + m_name + " Age:" + m_age); } #region Observer private Hashtable m_observers; public People() { m_observers = new Hashtable(); } public void Register(IObserver anObserver) { m_observers.Add(anObserver,anObserver); } public void UnRegister(IObserver anObserver) { m_observers.Remove(anObserver); } public void NotifyObservers(Object obj) { foreach (IObserver observer in m_observers.Values) { observer.Update(obj); } } #endregion } public class UI : IObserver { public void Update(Object obj) { Console.WriteLine("年龄:" + obj); if(obj.GetType() == typeof(int)) { Console.WriteLine("年龄:" + obj); } } } public class MainClass { public static void Main() { Console.WriteLine("Hello World"); People people = new People(); people.Name = "Lily"; people.Age = 18; people.Print(); UI ui = new UI(); people.Register(ui); people.Print(); people.Age = 20; people.Print(); people.UnRegister(ui); people.Age = 22; people.Print(); } } }
相关文章推荐
- 我理解的--java观察者模式
- 设计模式之观察者模式
- C# 设计模式-观察者(Observer)
- zen-cart开发教程 - 通知者/观察者模式
- Android设计模式应用---观察者模式
- 设计模式之观察者模式(发布-订阅模式publish/Subscribe)
- 观察者模式
- [Python设计模式] 第14章 老板来了——观察者模式
- 剪贴板中的观察者(Observer)模式
- 《JAVA与模式》26天系列—第18天—观察者模式
- OOP设计模式[JAVA]——02观察者模式
- 23种设计模式之观察者模式(Observer)
- 观察者模式
- 行为型-观察者模式、基于事件的观察者
- 设计模式之观察者模式
- 观察者模式-让你的对象知悉现况
- 设计模式之:解剖观察者模式
- Java观察者模式(Observer模式)
- 观察者(Observer)模式
- 设计模式之观察者模式