zoukankan      html  css  js  c++  java
  • C#观察者模式简例

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace Demo
    {
        public partial class WebForm3 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Cat cat = new Cat();
                Mouse mouse1 = new Mouse("小老鼠", cat);
                Mouse mouse2 = new Mouse("大老鼠", cat);
                Master master = new Master(cat);

                cat.Cry();
            }
        }

        public delegate void SubjectEventHandle();

        public abstract class Subject
        {
            public event SubjectEventHandle subEvent;

            protected void FireAway()
            {
                if (this.subEvent != null)
                {
                    this.subEvent();
                }
            }
        }

        public class Cat : Subject
        {
            public void Cry()
            {
                HttpContext.Current.Response.Write("猫大叫一声。");
                this.FireAway();
            }

        }

        public abstract class Observer
        {
            public Observer(Subject sub)
            {
                sub.subEvent += new SubjectEventHandle(sub_subEvent);
            }

            public abstract void sub_subEvent();
        }

        public class Mouse : Observer
        {
            private string name;
            public Mouse(string name, Subject sub)
                : base(sub)
            {
                this.name = name;
            }

            public override void sub_subEvent()
            {
                HttpContext.Current.Response.Write(this.name + "赶紧跑了。");
            }
        }

        public class Master : Observer
        {
            public Master(Subject sub)
                : base(sub)
            {
           
            }

            public override void sub_subEvent()
            {
                HttpContext.Current.Response.Write("主人被吵醒了。");
            }
        }
    }

  • 相关阅读:
    nio原理分析与代码实现
    SpringMvc下载excel文件
    centos6下mysql-5.5.21的安装
    CentOS下开启mysql远程连接,远程管理数据库
    客户端更新策略
    IDEA插件开发基础
    简易ORM(基于注解)
    尝试使用Java6API读取java代码
    Java源代码分析与生成
    Common Configration实验
  • 原文地址:https://www.cnblogs.com/zhuawang/p/2044996.html
Copyright © 2011-2022 走看看