委托:关于猫,老鼠,主人的面试题答案。

using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Web;
using  System.Web.SessionState;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.HtmlControls;

namespace  AspNetTest.Common
{
    
/// <summary>
    
/// Define_Delegate_CatMouse 的摘要说明。
    
/// </summary>

    
    
public delegate void ShoutEventHandler();
    
    
public class Define_Delegate_CatMouse : System.Web.UI.Page
    
{
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            Cat cat 
= new Cat();
            Mouse mouse1
= new Mouse(cat, "老鼠1");    
            Mouse mouse2
= new Mouse(cat, "老鼠2");    
            Master master
= new Master(cat);    
            cat.Shout();
            
// 在此处放置用户代码以初始化页面
        }


        
Web 窗体设计器生成的代码
    }

    
public abstract class ActionSubject
    
{
        
public ShoutEventHandler OnShout;
        
protected void AffectResponse()
        
{
            
if(this.OnShout!=null)
            
{
                
this.OnShout();
            }

        }

    }

    
    
public class Cat : ActionSubject
    
{
        
public void Shout()
        
{
            HttpContext.Current.Response.Write(
"猫大叫!<br>");
            AffectResponse();
        }

    }

    
public abstract class AffectSubject
    
{
        
public AffectSubject(ActionSubject actionSubject)
        
{
            actionSubject.OnShout 
+= new ShoutEventHandler(Response);
        }

        
public abstract void Response();
    }

    
public class Master : AffectSubject
    
{
        
public Master(ActionSubject actionSubject) : base(actionSubject)
        
{
        }

        
public override void Response()
        
{
            HttpContext.Current.Response.Write(
"主人醒了!<br>");
        }

    }

    
public class Mouse : AffectSubject
    
{
        
private string name;
        
public Mouse(ActionSubject actionSubject, string name) : base(actionSubject)
        
{
            
this.name = name;
        }

        
public override void Response()
        
{
            HttpContext.Current.Response.Write(
this.name + "跑!<br>");
        }

    }

    
    
    
    
    
    
    
}

你可能感兴趣的:(面试题)