最近在看兄弟连的java课程,只提取里面讲解设计模式的视频,一下是用c#实现的视频中用描述的观察者模式
using System; using System.Collections.Generic; namespace howar.Patterns.Observer{ public class Test{ public static void Main(String [] args){ Doll d = new Doll(3000); Penson p1 = new Penson("張三"); Penson p2 = new Penson("李四"); d.RegisterObserver(p1); d.RegisterObserver(p2); Console.WriteLine("第一輪調整價格。"); d.Price = 2899; Console.WriteLine("第二輪調整價格。"); d.Price = 2499; Console.WriteLine("第三輪調整價格。"); d.Price = 2099; d.RemoveObserver(p2); Console.WriteLine("第四輪調整價格。"); d.Price = 1688; } } public interface ISubject{ void RegisterObserver(IObserver o); void RemoveObserver(IObserver o); void NotifyObservers(); } public interface IObserver{ void update(float price); } public class Doll : ISubject{ private float price; public Doll(float price){ this.price = price; Console.WriteLine("娃娃初始設定價格成:"+price); } public float Price{ set { this.price = value; NotifyObservers(); } get { return this.price; } } private List<IObserver> l = new List<IObserver>(); public void RegisterObserver(IObserver o){ l.Add(o); } public void RemoveObserver(IObserver o){ l.Remove(o); } public void NotifyObservers(){ foreach(IObserver o in l){ o.update(price); } } } public class Penson : IObserver{ private String name; public Penson(String name){ this.name = name; } public void update(float price){ Console.WriteLine(name+"關注的娃娃價格已更新成:"+price); } } }
话说为啥屌丝都那么色?小白可怜的IT屌丝, 只能被威哥开玩笑。