Recursive delegate and state pattern (C# version)
来源:互联网 发布:淘宝摄影服务商 编辑:程序博客网 时间:2024/05/19 12:28
The concept is originated from "Practise StateCharts in C++", where author use member function pointer to represent state pattern.
c# version, more easy to illustrate
/////////////////////////////////////////////
public delegate MyStateProc MyStateProc(object sender);
MyStateProc StateOpen(object sender)
{
if (sender.ToString() == "SEND")
return new MyStateProc(StateSend);
else
return new MyStateProc(StateReceive);
}
MyStateProc StateSend(object sender)
{
MessageBox.Show("Send message: " + sender.ToString());
return null;
}
MyStateProc StateReceive(object sender)
{
MessageBox.Show("Receive message: " + sender.ToString());
return null;
}
private void button1_Click(object sender, System.EventArgs e)
{
string Flag = "SEND";
MyStateProc firstState = new MyStateProc(StateOpen);
MyStateProc nextState = (MyStateProc)
firstState.Method.Invoke(this, new object[]{Flag});
nextState.Method.Invoke(this, new object[]{"Hello, delegate!"});
}
c# version, more easy to illustrate
/////////////////////////////////////////////
public delegate MyStateProc MyStateProc(object sender);
MyStateProc StateOpen(object sender)
{
if (sender.ToString() == "SEND")
return new MyStateProc(StateSend);
else
return new MyStateProc(StateReceive);
}
MyStateProc StateSend(object sender)
{
MessageBox.Show("Send message: " + sender.ToString());
return null;
}
MyStateProc StateReceive(object sender)
{
MessageBox.Show("Receive message: " + sender.ToString());
return null;
}
private void button1_Click(object sender, System.EventArgs e)
{
string Flag = "SEND";
MyStateProc firstState = new MyStateProc(StateOpen);
MyStateProc nextState = (MyStateProc)
firstState.Method.Invoke(this, new object[]{Flag});
nextState.Method.Invoke(this, new object[]{"Hello, delegate!"});
}
- Recursive delegate and state pattern (C# version)
- merge sort and binary search recursive version
- C# Publisher/Subscriber Pattern, keyword event/delegate
- State Pattern
- State Pattern
- design pattern notes [7] - state,strategy,memento,mediator,and iterator
- the difference between state and strategy design pattern
- C#设计模式——状态模式(State Pattern)
- C#设计模式之状态者模式(State Pattern)
- C# delegate and event 规范写法
- C# EventHandler and Delegate(委托的使用)
- C# EventHandler and Delegate(委托的使用)
- C# EventHandler and Delegate(委托的使用)
- C# EventHandler and Delegate(委托的使用)
- C# EventHandler and Delegate(委托的使用)
- Inorder - Tree - traverse - recursive and not recursive
- The tenth pattern---------------State Pattern
- Design Pattern(3)-State Pattern
- Web网站开发设计中常用的技巧
- 去除html中的空格
- C++ Type traits
- linux 输入控制台下输入特殊符号
- 2个好用的js(实现树型菜单&&页面中展现word)
- Recursive delegate and state pattern (C# version)
- [转]UML类图关系全面剖析
- 公钥, 私钥和SSL
- 一个月赚5万美元--国产共享软件开发者周奕
- 4. Lambda Expressions (Lambda表达式)与Expressions Tree(表达式树)
- PeachTree Accounting
- java字符串之基本数据类型与字符串的转化
- SQL中char、varchar、text和nchar、nvarchar、ntext的区别
- appservices.exe