首页 > 学院 > 开发设计 > 正文

委托、Lambda表达式、事件系列06,使用Action实现观察者模式,体验委托和事件的区别

2019-11-17 02:51:08
字体:
来源:转载
供稿:网友

委托、Lambda表达式、事件系列06,使用Action实现观察者模式,体验委托和事件的区别

在"实现观察者模式(Observer Pattern)的2种方式"中,曾经通过接口的方式、委托与事件的方式实现过观察者模式。本篇体验使用Action实现此模式,并从中体验委托与事件的区别。

□ 使用Action实现观察者模式

就举一个足球场上的例子,当裁判吹响终场哨,胜队庆祝,失败队落寞。把裁判看作是被观察者,比赛中的两队看作是观察者。

裁判作为被观察者需要提供一个Action委托供观察者方法注册。

    public class Referee
    {
        public Action DoSth;
        public void ISayGameOver()
        {
            Console.WriteLine("嘀嘀嘀......比赛结束了~~");
            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){}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表