观察者模式

来源:互联网 发布:阿里云,数据库 编辑:程序博客网 时间:2024/06/16 23:53
最近在看兄弟连的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;}}privateList<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屌丝, 只能被威哥开玩笑。
0 0
原创粉丝点击