接口(猫,鼠,人联动事类) 观察者模式

本文通过一个简单的例子展示了观察者模式的实现方式。该模式中包括主题(Subject)、观察者(Observer)等角色,并通过具体代码解释了各部分的功能及交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Observer
{
   
    public   interface   Observer  
    {  
        void   Response();   //观察者的响应,如是老鼠见到猫的反映  
    }  
    public   interface   Subject  
    {  
        void   AimAt(Observer   obs);   //针对哪些观察者,这里指猫的要扑捉的对象---老鼠  
    }  
   public   class   Mouse   :   Observer  
   {  
       private   string   name;  
       public   Mouse(string   name,   Subject   subj)  
       {  
           this.name   =   name;  
           subj.AimAt(this);  
       }  
  
       public   void   Response()  
       {  
             Console.WriteLine(name   +   "   attempt   to   escape! ");  
       }  
   }  

   public   class   Master   :   Observer  
   {  
       public   Master(Subject   subj)  
       {  
            subj.AimAt(this);  
       }  
  
       public   void   Response()  
       {  
         Console.WriteLine( "Host   waken! ");  
       }  
   }  
  
   public  class   Cat   :   Subject  
   {  
       private   ArrayList   observers;  
       public   Cat()  
       {  
            this.observers   =   new   ArrayList();  
       }  
       public   void   AimAt(Observer   obs)  
       {  
            this.observers.Add(obs);  
       }  
       public   void   Cry()  
       {  
            Console.WriteLine( "Cat   cryed! ");  
           foreach   (Observer   obs   in   this.observers)  
           {  
                obs.Response();  
           }  
   }  
   }  
 
   class   MainClass  
   {  
   /**////   <summary>  
   ///   应用程序的主入口点。  
   ///   </summary>  
   [STAThread]  
   static   void   Main(string[]   args)  
   {  
       Cat   cat   =   new   Cat();  
       Mouse   mouse   =   new   Mouse( "mouse ",   cat);    
       Master   master   =   new   Master(cat);  
       cat.Cry();  
       }  
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值