nintenyun

导航

observable pattern

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
public class Program
{
public static void Main(string[] args)
{
Express express = new Express();
Notificaiton notificaiton = new Notificaiton();
express.Received += notificaiton.MakeAlert;
express.ReceiveExpress(); //ready for receive express;
Console.ReadKey();
}
}

public class Express
{
public string address = "shanghai";
public double price = 30;
public int time;
public delegate void ExpressReceiveEventHandler(Object sender, ExpressReceiveArgs e);
public event ExpressReceiveEventHandler Received;
protected virtual void onReceived(ExpressReceiveArgs e)
{
if (Received != null)
{
Received(this, e);
}
}
public void ReceiveExpress()
{
for (int i = 0; i <= 100; i++)
{
time = i;
if (time > 95)
{
ExpressReceiveArgs e = new ExpressReceiveArgs(time);
onReceived(e);
}
}
}

}

public class Notificaiton
{
public void MakeAlert(Object sender, ExpressReceiveArgs e)
{
Express express = (Express)sender;
Console.WriteLine("{2} - send by address {0} - send price {1}", express.address, express.price,e.time);
}
}

public class ExpressReceiveArgs : EventArgs
{
public ExpressReceiveArgs(int time)
{
this.time = "remain have" + (100 - time).ToString() + "arrived";
}
public string time { get; set; }
}

}

posted on 2013-08-02 17:59  nintenyun  阅读(154)  评论(0)    收藏  举报