javaca88

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;

public partial class Test_TestJavascript_TestDele : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btDelegate_Click(object sender, EventArgs e)
    {

    }


}
//--------------------------------------------------------------------------------------------------------------------
//http://www.pconline.com.cn/pcedu/empolder/net/0603/765619_1.html
//讲故事谈.NET委托:一个C#睡前故事
public class worker : System.Web.UI.Page
    {

        public void Advise(Boss boss)
        {
            this._boss = boss;
        }

        public void DoWork()
        {
            if (_boss != null)
            {
                _boss.WorkStarted();//transer boss\'s methods to tell boss 
            }

            if (_boss != null)
            {
                _boss.WorkProgressing();
            }

            if (_boss != null)
            {
                _boss.WorkCompleted();
            }
        }


        private Boss _boss;

    }

 

public class Boss : System.Web.UI.Page
    {
        public void WorkStarted() { /* 老板不关心。 */ }
        public void WorkProgressing() { /*老板不关心。 */ }
        public int WorkCompleted()
        {
            Response.Write("hao i know");
            return 2; //总分为10
        }
    }


public class Universe  : System.Web.UI.Page
{
        public void Main()
        {
        Worker peter = new Worker();
        Boss boss = new Boss();
        peter.Advise(boss);
        peter.DoWork();
        Response.Write("completed");
    }
}

//----------------------------------------------------------------------------------------------------------------------
interface IWorkEvents
{
    void WorkStarted();
    void WorkProgressing();
    int WorkCompleted();
}

public class workerInterface : System.Web.UI.Page
{

    public void Advise(IWorkEvents events)
    {
       _events = events;
       
    }

    public void DoWork()
    {
        if (_events != null)
        {
            _events.WorkStarted();
           
        }

        if (_events != null)
        {
            _events.WorkProgressing();
          
        }

        if (_events != null)
        {
            _events.WorkCompleted();
        }
    }

    private IWorkEvents _events;//////
}


public class BossInterface : System.Web.UI.Page, IWorkEvents/////
{
    public void WorkStarted() { /* 老板不关心。 */ }
    public void WorkProgressing() { /*老板不关心。 */ }
    public int WorkCompleted()
    {
        Response.Write("hao i know");
        return 3; //总分为10
    }
}

//--------------------------------------------------------------------------------------------delegate

delegate void WorkStarted();//public
delegate void WorkProgressing();
delegate int WorkCompleted();


public class workerdelegate : System.Web.UI.Page
{
    public void DoWork()
    {
        if (Started != null)
        {
            Started();
        }

        if (Processing  != null)
        {
            Processing();
        }

        if (Complated != null)
        {
            Complated();
        }
    }

    private WorkStarted Started;
    private WorkProgressing Processing;
    private WorkCompleted Complated;
}


public class Bossdelegate : System.Web.UI.Page ///// 
{
    public int WorkCompleted()
    {
        Response.Write("hao i know");
        return 3; //总分为10
    }
}

public class Universedelegate
{
    public void Main()
    {
        workerdelegate  peter = new workerdelegate ();
        Bossdelegate boss = newBossdelegate();
        peter.completed = new WorkCompleted(boss.WorkCompleted);//relative with delegate
        peter.DoWork();
        Response.Write("complated");
    }
}

 

public class UniversedelegateStatic 
{
    static void WorkerStartedWork()
    {
        Response.Write("Universe notices worker starting work");
    }

    static int WorkerCompletedWork()
    {
        Response.Write("Universe pleased with worker\'s work");
        return 7;
    }

    static void Main()
    {
        workerdelegate peter = new workerdelegate();
        Bossdelegate boss = new Bossdelegate();
        peter.completed = new WorkCompleted(boss.WorkCompleted);
        peter.started = new WorkStarted(UniversedelegateStatic.WorkerStartedWork);
        peter.completed = new WorkCompleted(UniversedelegateStatic.WorkerCompletedWork);//remind of it peter\'s methods is delegated
        peter.DoWork();
       Response.Write("Main: 工人工作完成");
       
    }
}
//-----------------------------------------------------------------------------------------------------------------------------------------
//delegate void WorkStarted();//public
//delegate void WorkProgressing();
//delegate int WorkCompleted();// Still need ,view them upward
public class workerdelegateEvent : System.Web.UI.Page
{
    public void DoWork()
    {
        if (Started != null)
        {
            Started();
        }

        if (Processing != null)
        {
            Processing();
        }

        if(completed !=null)
        {
            foreach (WorkCompleted wc in completed.GetInvocationList())
            {
                int grade = wc();
                Response.Write("Main: 工人工作完成, get grade:"+grade);
            }
        }
    }

    public event WorkStarted started;
    public event WorkProgressing progressing;
    public event WorkCompleted completed;
   
}

public class UniversedelegateStaticEvent
{
    static void WorkerStartedWork()
    {
        Response.Write("Universe notices worker starting work");
    }

    static int WorkerCompletedWork()
    {
        Response.Write("Universe pleased with worker\'s work");
        return 7;
    }

    static void Main()
    {
        workerdelegate peter = new workerdelegate();
        Bossdelegate boss = new Bossdelegate();
        peter.completed += new WorkCompleted(boss.WorkCompleted);
        peter.started += new WorkStarted(UniversedelegateStatic.WorkerStartedWork);
        peter.completed += new WorkCompleted(UniversedelegateStatic.WorkerCompletedWork);//remind of it peter\'s methods is delegated
        peter.DoWork();
        Response.Write("Main: 工人工作完成");

    }
}

分类:

技术点:

相关文章: