观察者模式(猫大叫一声,主人惊醒,老鼠跑)

    public delegate void SubEventHandle();
    public abstract class Subject
    {

        public event SubEventHandle SubEvent;
        public void OnSub()
        {
            if (SubEvent != null)
                SubEvent();
        }
    }

    public abstract class Observer
    {
        public Observer(Subject sub)
        {
            sub.SubEvent += new SubEventHandle(Response);
        }
        protected abstract void Response();
    }

    public class Mouse : Observer
    {
        public Mouse(Subject sub):base(sub)
        {

        }
        public override void Response()
        {

        }
    }

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

        protected override void Response()
        {

        }
    }

    public class Cat : Subject
    {
        private List<Observer> observers;
        public Cat()
        {
            observers = new List<Observer>();
        }

        public void Cry()
        {
            base.OnSub();
        }
    }
时间: 2024-10-05 09:25:42

观察者模式(猫大叫一声,主人惊醒,老鼠跑)的相关文章

猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒.(C#语言)要求:  1.要有联动性,老鼠和主人的行为是被动的.2.考虑可扩展性,猫的叫声可能引起其他联动效应. 要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法.    2. 对老鼠和主人进行抽象 1 public interface Observer 2 { 3 void Response(); //观察者的响应,如是老鼠见到猫的反映 4 } 5 public interface Subject 6 { 7 void

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒

第一种解决方案用事件来解决:是多级的联动:即:猫叫->老鼠跑->人醒 1 public class Cat 2 { 3 public delegate void Crying(object sender,EventArgs e)://定义一个猫叫委托 4 public event Crying cry://定义猫叫事件 5 public void OnCry(EventArgs e) 6 { 7 if(cry!=null) 8 { 9 cry(this,e): 10 } 11 } 12 pub

观察者模式-猫捉老鼠(委托与事件)

猫捉老鼠是一个典型的观察者模式的实现案例,在其中加入委托与事件的程序实现,将会提高代码的一个可读性,其下是代码实现: 创建一个Cat类: using System; using System.Collections.Generic; using System.Diagnostics.Contracts; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 猫捉老鼠 { /// <summary

如何评测软件工程知识技能水平

一.软件工程师的软件工程知识技能水平高低主要体现在哪些方面总结 1.软件工程师 软件工程师英文是Software Engineer,是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格.软件工程师是从事软件开发相关工作的人员的统称.软件工程师包括软件设计人员.软件架构人员.软件工程管理人员.程序员等一系列岗位,工作内容都与软件开发生产相关.软件工程师的技术要求是比较全面的,除了最基础的编程语言(C/C++/JAVA等).数据库(SQL/ORACLE/DB2等)等,还有诸多如AJ

设计模式之二:观察者模式(Observer Pattern)

先看下观察者模式的定义: The Observer Pattern defines a one-to-many denpendency between objects so that when one object changes state, all of its dependents are notified and updated automatically.:观察者模式定义了对象间一对多依赖关系,使得当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新. 观察者模式又叫发布-

转-观察模式 猫叫鼠跑人醒

猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. public interface Observer    {        void Response();    //观察者的响应,如是老鼠见到猫的反映    }    public interface Subject    {        void AimAt(Observer obs);  //针对哪些观察者,这里指猫的要扑捉的对象---老鼠    }    public class Mouse : Observer    {       

猫 老鼠 人的编程题

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒.(C#语言) 要求: 1.要有联动性,老鼠和主人的行为是被动的. 2.考虑可扩展性,猫的叫声可能引起其他联动效应. 要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法.2. 对老鼠和主人进行抽象 评分标准: 构造出Cat.Mouse.Master三个类,并能使程序运行(2分) 从Mouse和Master中提取抽象(5分) 联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒.(3分) public interf

观察者模式(利用委托)

1.添加三个类文件,定义三个类(猫.狗.老鼠) 猫是主要事件 namespace MyDelegate { public class Cat { public CatMiaoHandler CatMiaoHandlerMethod;//在Cat类实例化一个委托 public void Miao() { Console.WriteLine("猫,叫一声"); if (CatMiaoHandlerMethod!=null)//若委托不为空,执行委托 { CatMiaoHandlerMeth

C#习题大全

C#习题大全 1.String str=new String("a")和String str = "a"有什么区别? String str = "a"; 这个只是一个引用,内存中如果有“a"的话,str就指向它,如果没有才创建如后还用到"a"这个字符串的话并且是这样用: String str1 = "a"; String str2 = "a"; String str2 = &q