代码改变世界

delegate

2007-11-05 11:43  莫耶  阅读(272)  评论(0编辑  收藏  举报
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

using System.Text;

// N:1调用
public delegate void DataChangedHandler(int increment);
// 操作实现,定义了数据计算方法
public class CounterOperaotr
{
    
public DataChangedHandler Increased;
    
public void Add(int data) { Increased(data); }
    
public void Substract(int data) { Increased(-1 * data); }
}

// 操作引用,有操作引用实体及数据源
public class Counter
{
    
public int Data;
    
// 接收广播
    public Counter(CounterOperaotr counterOperator)
    
{
        counterOperator.Increased 
+= ChangeData;
    }


    
public void ChangeData(int increment){
        Data 
+= increment;
    }

}

// 2号
public class Counter2
{
    
public int Data;
    
// 接收广播
    public Counter2(CounterOperaotr counterOperator)
    
{
        counterOperator.Increased 
+= ChangeData;
    }


    
public void ChangeData(int increment){
        Data 
+= increment;
    }

}


public partial class test : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        Response.Write(Test());
    }

    
    
public string Test()
    
{
        
// 操作类
        CounterOperaotr countoperator = new CounterOperaotr();
        
// 操作类的客户
        Counter counter = new Counter(countoperator);
        
// 客户2
        Counter2 counter2 = new Counter2(countoperator);

        countoperator.Add(
12);
        countoperator.Substract(
10);

        StringBuilder sb 
= new StringBuilder();

        sb.AppendLine(counter.Data.ToString());
        sb.AppendLine(counter2.Data.ToString());

        
return sb.ToString();
    }

}