码迷,mamicode.com
首页 > 其他好文 > 详细

观察者模式

时间:2014-11-11 02:05:56      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:观察者模式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 观察者模式
{
    class Program
    {
        static void Main(string[] args)
        {
            看NBA的同事 zhangSan = new 看NBA的同事() { Name = "张三" };
            看NBA的同事 li = new 看NBA的同事()
            {
                Name = "李四"
            };
            看NBA的同事 ww = new 看NBA的同事() { Name = "王五" };
            打游戏 xiaoWu = new 打游戏() { Name = "小五" };

            老板 xiaoLi = new 老板();

            xiaoLi.注册(zhangSan);
            xiaoLi.注册(li);
            xiaoLi.注册(ww);
            xiaoLi.注册(xiaoWu);

            xiaoLi.取消注册(li);
            xiaoLi.通知();

            Console.ReadLine();
        }
    }

    public abstract class 被观察者
    {
        public List<观察者> list = new List<观察者>();

        public abstract void 注册(观察者 ts);
        public abstract void 取消注册(观察者 ts);
        public abstract void 通知();
    }

    public class 前台 : 被观察者
    {


        public override void 注册(观察者 ts)
        {
            list.Add(ts);
        }

        public override void 取消注册(观察者 ts)
        {
            list.Remove(ts);
        }

        public override void 通知()
        {
            Console.WriteLine("老板来了....");
            foreach (观察者 item in list)
            {
                item.更新();
            }
        }
    }


    public class 老板 : 被观察者
    {

        public override void 注册(观察者 ts)
        {
            list.Add(ts);
        }

        public override void 取消注册(观察者 ts)
        {
            list.Remove(ts);
        }

        public override void 通知()
        {
            Console.WriteLine("同志们,我回来了....");
            foreach (观察者 item in list)
            {
                item.更新();
            }
        }
    }

    public abstract class 观察者
    {
        public string Name { get; set; }
        public abstract void 更新();
    }

    public class 看NBA的同事 : 观察者
    {

        public override void 更新()
        {
            Console.WriteLine(Name + " 关掉NBA,开始工作......");
        }
    }

    public class 打游戏 : 观察者
    {

        public override void 更新()
        {
            Console.WriteLine(Name + " 关掉游戏,开始工作。。。。");
        }
    }
}


本文出自 “Mr.Zhang” 博客,请务必保留此出处http://zhangzhipeng.blog.51cto.com/9115459/1575158

观察者模式

标签:观察者模式

原文地址:http://zhangzhipeng.blog.51cto.com/9115459/1575158

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!