程序簡單就 不再作說明了.
在學習IssueVision的OBSERVER(觀察者)模式時由于對代理和事件不是很熟悉,遇到了一些問題,所以就有了這個簡單習作.
TestEvent.cs
using System;
namespace ConsoleApplication2
{
??? /// <summary>
??? /// Class1 的摘要說明。
??? /// </summary>
??? class TestEvent
??? {
??????? /// <summary>
??????? /// 應用程序的主入口點。
??????? /// </summary>
??????? [STAThread]
??????? static void Main(string[] args)
??????? {
??????????? //
??????????? // TODO: 在此處添加代碼以啟動應用程序
??????????? //
??????????? TestEvent c = new TestEvent();
??????????? c.Test();
???????
??????? }
??????? public void Test()
??????? {
??????????? ChangeNumber number = new ChangeNumber();
?
??????????? number.BigEvent += new ChangeNumber.ChangeHandler(this.Big);
??????????? number.SmallEvent += new ChangeNumber.ChangeHandler(this.Small);
??????????? number.EqualEvent += new ChangeNumber.ChangeHandler(this.Equal);
??????????? number.Number = 1;??????? //運行之前Number=0;
??????????? number.Number = 1;??????? //運行之前Number=1;
??????????? number.Number = 0;??????? //運行之前Number=1;
??????? }
??????? public void Big()
??????? {
??????????? Console.WriteLine("big");
??????? }
??????? public void Small()
??????? {
??????????? Console.WriteLine("small");
??????? }
??????? public void Equal()
??????? {
??????????? Console.WriteLine("equal");
??????? }
??? }
}
ChangeNumber.cs
using System;
namespace ConsoleApplication2
{
??? /// <summary>
??? /// Class2 的摘要說明。
??? /// </summary>
??? public class ChangeNumber
??? {
??????? public delegate void ChangeHandler();
??????? public event ChangeHandler BigEvent;
??????? public event ChangeHandler SmallEvent;
??????? public event ChangeHandler EqualEvent;
??????? public ChangeNumber()
??????? {
??????????? //
??????????? // TODO: 在此處添加構造函數邏輯
??????????? //
??????? }
??????? private int m_number = 0;
??????? public int Number
??????? {
??????????? set
??????????? {
??????????????? if(value > this.m_number)
??????????????? {
??????????????????? BigEvent();??????????? //這時最好先判斷一下BigEvent是不是為null
??????????????? }
??????????????? else if(value < this.m_number)
??????????????? {
??????????????????? SmallEvent();
??????????????? }
??????????????? else
??????????????? {
??????????????????? EqualEvent();
??????????????? }
??????????????? m_number = value;
??????????? }
??????? }
??? }
}
?