可能最近连续看多了,没有消化吧。
只是机械的打出代码,以及调试错误信息而已。
下一个事件委托实现,要学慢点了。
最近兴趣又要转向WINDOWS AD 2008域更改名称,EXCHANGE架设和3DMAX配合DEADLINE作RENDER FARM渲染农场了。
/* * Created by SharpDevelop. * User: home * Date: 2013/4/27 * Time: 15:52 * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Observer { class Program { public static void Main(string[] args) { Boss huhansan = new Boss(); //Secretary tongzihe = new Secretary(); StockObserver tongshi1 = new StockObserver("魏关姹", huhansan); NBAObserver tongshi2 = new NBAObserver("易管查", huhansan); huhansan.Attach(tongshi1); huhansan.Attach(tongshi2); huhansan.SubjectState= "我胡汉三又回来啦!!!哈哈哈!!!"; huhansan.Notify(); Console.ReadKey(true); } } /*class Secretary { private IList<StockObserver> observers = new List<StockObserver>(); private string action; public void Attach(StockObserver observer) { observers.Add(observer); } public void Notify() { foreach (StockObserver o in observers) o.Update(); } public string SecretaryAction { get { return action; } set { action = value; } } } class StockObserver { private string name; private Secretary sub; public StockObserver(string name, Secretary sub) { this.name = name; this.sub = sub; } public void Update() { Console.WriteLine("{0} {1} 关闭股票行情,继续工作! ",sub.SecretaryAction, name); } } abstract class Observer { protected string name; protected Secretary sub; public Observer(string name, Secretary sub) { this.name = name; this.sub = sub; } public abstract void Update(); } class StockObserver : Observer { public StockObserver(string name, Secretary sub) : base(name, sub) { } public override void Update() { Console.WriteLine("{0} {1} 关闭股票行情,继续工作! ",sub.SecretaryAction, name); } } class NBAObserver : Observer { public NBAObserver(string name, Secretary sub) : base(name, sub) { } public override void Update() { Console.WriteLine("{0} {1} 关闭NBA,继续工作! ",sub.SecretaryAction, name); } } class Secretary { private IList<Observer> observers = new List<Observer>(); private string action; public void Attach(Observer observer) { observers.Add(observer); } public void Detach(Observer observer) { observers.Remove(observer); } public void Notify() { foreach (Observer o in observers) o.Update(); } public string SecretaryAction { get { return action; } set { action = value; } } }*/ interface Subject { void Attach(Observer observer); void Detach(Observer observer); void Notify(); string SubjectState { get; set; } } class Boss : Subject { private IList<Observer> observers = new List<Observer>(); private string action; public void Attach(Observer observer) { observers.Add(observer); } public void Detach(Observer observer) { observers.Remove(observer); } public void Notify() { foreach (Observer o in observers) o.Update(); } public string SubjectState { get { return action; } set { action = value; } } } abstract class Observer { protected string name; protected Subject sub; public Observer(string name, Subject sub) { this.name = name; this.sub = sub; } public abstract void Update(); } class StockObserver : Observer { public StockObserver(string name, Subject sub) : base(name, sub) { } public override void Update() { Console.WriteLine("{0} {1} 关闭股票行情,继续工作! ",sub.SubjectState, name); } } class NBAObserver : Observer { public NBAObserver(string name, Subject sub) : base(name, sub) { } public override void Update() { Console.WriteLine("{0} {1} 关闭NBA,继续工作! ",sub.SubjectState, name); } } }