在"實現(xiàn)觀察者模式(Observer Pattern)的2種方式"中,曾經(jīng)通過接口的方式、委托與事件的方式實現(xiàn)過觀察者模式。本篇體驗使用Action實現(xiàn)此模式,并從中體驗委托與事件的區(qū)別。
□ 使用Action實現(xiàn)觀察者模式
就舉一個足球場上的例子,當(dāng)裁判吹響終場哨,勝隊?wèi)c祝,失敗隊落寞。把裁判看作是被觀察者,比賽中的兩隊看作是觀察者。
裁判作為被觀察者需要提供一個Action委托供觀察者方法注冊。
public class Referee{public Action DoSth;public void ISayGameOver(){Console.WriteLine("嘀嘀嘀......比賽結(jié)束了~~");DoSth();}}
勝利的隊和失敗的隊擁有共同的基類。
public class Team{PRivate string _name;public Team(string name){_name = name;}public string Name{get { return _name; }}}
勝利隊或失敗隊,作為觀察者,必須有符合Referee中Action定義的方法。
public class WinTeam : Team{public WinTeam(string name) : base(name){}public void Celebrate(){Console.WriteLine("我們晉級了,好開心!");}}public class LoseTeam : Team{public LoseTeam(string name) : base(name){}
新聞熱點
疑難解答