事件(event)设计准则(二)
来源:互联网 发布:编程一小时怎么登陆 编辑:程序博客网 时间:2024/05/20 00:35
class PubEventArgs : EventArgs
...{
private readonly string m_magazineName;
private readonly DateTime m_pubDate;
public PubEventArgs(string magazineName, DateTime pubDate)
...{
m_magazineName = magazineName;
m_pubDate = pubDate;
}
public string magazineName
...{
get ...{ return m_magazineName; }
}
public DateTime pubDate
...{
get ...{ return m_pubDate; }
}
}
class Publisher
...{
public delegate void PubComputerEventHandler(object sender,PubEventArgs e);//statement of the event for agents
public delegate void PubLiftEventHandler(object sender, PubEventArgs e);
public event PubComputerEventHandler PubComputer;//event of statement
public event PubLiftEventHandler PubLife;
protected virtual void OnPubComputer(PubEventArgs e)
...{
PubComputerEventHandler handler = PubComputer;
if(handler!=null)
...{
handler(this, e);
}
}
protected virtual void OnPubLife(PubEventArgs e)
...{
PubLiftEventHandler handler = PubLife;
if (handler != null)
...{
handler(this, e);
}
}
public void issueComputer(string magazineName,DateTime pubDate)//method of trigger event
...{
Console.WriteLine("issue "+magazineName);
OnPubComputer(new PubEventArgs(magazineName, pubDate));
}
public void issueLife(string magaineName,DateTime pubDate)
...{
Console.WriteLine("issue " + magaineName);
OnPubLife(new PubEventArgs(magaineName, pubDate));
}
}
class Subscriber
...{
private string name;
public Subscriber(string name)
...{
this.name = name;
}
public void Reveive(object sender ,PubEventArgs e)//define in the event subscribers procedure of handing event
...{
Console.WriteLine(e.pubDate+" "+name + " have already received " + e.magazineName);
}
}
class EventTest
...{
static void Main()
...{
Publisher pub = new Publisher();
Subscriber sam = new Subscriber("Sam");
pub.PubComputer += new Publisher.PubComputerEventHandler(sam.Reveive);//Subscriber to the event issuers an event
Subscriber Jone = new Subscriber("Jone");
pub.PubComputer += new Publisher.PubComputerEventHandler(Jone.Reveive);
pub.PubLife += new Publisher.PubLiftEventHandler(Jone.Reveive);
pub.issueComputer("computer magazine",Convert.ToDateTime("2006-1-1"));//trigger event
pub.issueLife("Life magazine", Convert.ToDateTime("2006-1-1"));
Console.WriteLine();
Console.WriteLine("one year ago");
pub.PubComputer -= new Publisher.PubComputerEventHandler(Jone.Reveive);
pub.issueComputer("computer magazine", Convert.ToDateTime("2007-1-1"));
pub.issueLife("Life magazine", Convert.ToDateTime("2007-1-1"));
}
}
...{
private readonly string m_magazineName;
private readonly DateTime m_pubDate;
public PubEventArgs(string magazineName, DateTime pubDate)
...{
m_magazineName = magazineName;
m_pubDate = pubDate;
}
public string magazineName
...{
get ...{ return m_magazineName; }
}
public DateTime pubDate
...{
get ...{ return m_pubDate; }
}
}
class Publisher
...{
public delegate void PubComputerEventHandler(object sender,PubEventArgs e);//statement of the event for agents
public delegate void PubLiftEventHandler(object sender, PubEventArgs e);
public event PubComputerEventHandler PubComputer;//event of statement
public event PubLiftEventHandler PubLife;
protected virtual void OnPubComputer(PubEventArgs e)
...{
PubComputerEventHandler handler = PubComputer;
if(handler!=null)
...{
handler(this, e);
}
}
protected virtual void OnPubLife(PubEventArgs e)
...{
PubLiftEventHandler handler = PubLife;
if (handler != null)
...{
handler(this, e);
}
}
public void issueComputer(string magazineName,DateTime pubDate)//method of trigger event
...{
Console.WriteLine("issue "+magazineName);
OnPubComputer(new PubEventArgs(magazineName, pubDate));
}
public void issueLife(string magaineName,DateTime pubDate)
...{
Console.WriteLine("issue " + magaineName);
OnPubLife(new PubEventArgs(magaineName, pubDate));
}
}
class Subscriber
...{
private string name;
public Subscriber(string name)
...{
this.name = name;
}
public void Reveive(object sender ,PubEventArgs e)//define in the event subscribers procedure of handing event
...{
Console.WriteLine(e.pubDate+" "+name + " have already received " + e.magazineName);
}
}
class EventTest
...{
static void Main()
...{
Publisher pub = new Publisher();
Subscriber sam = new Subscriber("Sam");
pub.PubComputer += new Publisher.PubComputerEventHandler(sam.Reveive);//Subscriber to the event issuers an event
Subscriber Jone = new Subscriber("Jone");
pub.PubComputer += new Publisher.PubComputerEventHandler(Jone.Reveive);
pub.PubLife += new Publisher.PubLiftEventHandler(Jone.Reveive);
pub.issueComputer("computer magazine",Convert.ToDateTime("2006-1-1"));//trigger event
pub.issueLife("Life magazine", Convert.ToDateTime("2006-1-1"));
Console.WriteLine();
Console.WriteLine("one year ago");
pub.PubComputer -= new Publisher.PubComputerEventHandler(Jone.Reveive);
pub.issueComputer("computer magazine", Convert.ToDateTime("2007-1-1"));
pub.issueLife("Life magazine", Convert.ToDateTime("2007-1-1"));
}
}
一个程序用两种方式写
没有按准则写
class Publisher
...{
public delegate void PubComputer(string magazineName);//statement of the event for agents
public delegate void PubLift(string magazineName);
public event PubComputer OnPubComputer;//event of statement
public event PubLift OnPubLife;
public void issueComputer()//method of trigger event
...{
if (OnPubComputer != null)
...{
Console.WriteLine("issue <<Programs>> magazine");
OnPubComputer("Computer magazine");
}
}
public void issueLife()
...{
if (OnPubLife != null)
...{
Console.WriteLine("issue <<Life>> magazine");
OnPubLife("Life magazine");
}
}
}
class Subscriber
...{
private string name;
public Subscriber(string name)
...{
this.name = name;
}
public void Reveive(string magazineName)//define in the event subscribers procedure of handing event
...{
Console.WriteLine(name+" have already received "+magazineName);
}
}
class EventTest
...{
static void Main()
...{
Publisher pub = new Publisher();
Subscriber sam = new Subscriber("Sam");
pub.OnPubComputer += new Publisher.PubComputer(sam.Reveive);//Subscriber to the event issuers an event
Subscriber Jone = new Subscriber("Jone");
pub.OnPubComputer += new Publisher.PubComputer(Jone.Reveive);
pub.OnPubLife += new Publisher.PubLift(Jone.Reveive);
pub.issueComputer();//trigger event
pub.issueLife();
Console.WriteLine();
Console.WriteLine("one year ago");
pub.OnPubComputer -= new Publisher.PubComputer(Jone.Reveive);
pub.issueComputer();
pub.issueLife();
}
}
...{
public delegate void PubComputer(string magazineName);//statement of the event for agents
public delegate void PubLift(string magazineName);
public event PubComputer OnPubComputer;//event of statement
public event PubLift OnPubLife;
public void issueComputer()//method of trigger event
...{
if (OnPubComputer != null)
...{
Console.WriteLine("issue <<Programs>> magazine");
OnPubComputer("Computer magazine");
}
}
public void issueLife()
...{
if (OnPubLife != null)
...{
Console.WriteLine("issue <<Life>> magazine");
OnPubLife("Life magazine");
}
}
}
class Subscriber
...{
private string name;
public Subscriber(string name)
...{
this.name = name;
}
public void Reveive(string magazineName)//define in the event subscribers procedure of handing event
...{
Console.WriteLine(name+" have already received "+magazineName);
}
}
class EventTest
...{
static void Main()
...{
Publisher pub = new Publisher();
Subscriber sam = new Subscriber("Sam");
pub.OnPubComputer += new Publisher.PubComputer(sam.Reveive);//Subscriber to the event issuers an event
Subscriber Jone = new Subscriber("Jone");
pub.OnPubComputer += new Publisher.PubComputer(Jone.Reveive);
pub.OnPubLife += new Publisher.PubLift(Jone.Reveive);
pub.issueComputer();//trigger event
pub.issueLife();
Console.WriteLine();
Console.WriteLine("one year ago");
pub.OnPubComputer -= new Publisher.PubComputer(Jone.Reveive);
pub.issueComputer();
pub.issueLife();
}
}
按准则写:
- 事件(event)设计准则(二)
- 事件(event)设计准则(一)
- 初学事件Event(二)
- libevent事件(二)---event源码
- C#事件-设计准则
- 数据库设计准则(范式)
- 事件(event)
- 事件(Event)
- event事件(1)
- 创建事件(event)
- 事件(event)
- MySQL事件(Event)
- C# 事件(Event)
- C# 事件(Event)
- C#事件(Event)
- MySQL事件(Event)
- C# 事件(Event)
- 事件(Event)
- 常用linux命令
- java.sql.SQLException: ORA-00903: invalid table name
- 事件(event)定义及步骤
- 索引中丢失 IN 或 OUT 参数:: 1
- 事件(event)设计准则(一)
- 事件(event)设计准则(二)
- Java程序中使用oracle数据库LOB字段的总结
- 读网080202
- C# 学习自定义控件 再做一个ip地址控件(经过测试的)
- C 截取字符串
- Struts控制器组件
- Alfresco中的错误机制处理
- VC中调用JavaScript的代码片段
- 网站移出