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; }
}
}

浙公网安备 33010602011771号