0
A
回答
1
State Pattern的基本思想是在某些Context类中某些行为是在另一个对象中定义的。
public class Context
{
....
public void Request()
{
_state.Handle(this);
}
}
的Request
行为取决于_state
当前值。 State
是可以在运行时更改的东西,对于Context
的用户,Context
的行为将会改变。
在以下代码中,当前Context
传递给State
,而State
可以更改Context
。
/// <summary>
/// The 'State' abstract class
/// </summary>
abstract class State
{
public abstract void Handle(Context context);
}
/// <summary>
/// A 'ConcreteState' class
/// </summary>
class ConcreteStateA : State
{
public override void Handle(Context context)
{
context.State = new ConcreteStateB();
}
}
/// <summary>
/// A 'ConcreteState' class
/// </summary>
class ConcreteStateB : State
{
public override void Handle(Context context)
{
context.State = new ConcreteStateA();
}
}
本示例摘自dofactory,其中包含对最流行设计模式的描述。
0
我认为这句话的意思是你可以有一个类Cursor对象(借用维基百科的例子),并将其用作工具。
但是,Cursor对象的内部状态可以是PenTool或SelectionTool,它可以来回切换而不影响Cursor对象。因此,本质上,Cursor对象在用作工具时,将其类型从“PenTool”更改为“SelectionTool”并返回,而不影响使用Cursor对象的代码。
相关问题
- 1. 简要介绍Qt?
- 2. 简单介绍java游戏编程
- 3. UI设计 - 城市/国家的设计模式下降? (ASP.NET MVC)
- 4. swt与拖放设计器的介绍?
- 5. “国家设计模式”可以被认为是“建筑模式”?
- 6. Postgrest介绍除了文档
- 7. 计算列 - 需要介绍
- 8. 计划任务介绍CakePHP
- 9. 应用介绍在清单
- 10. SVN介绍
- 11. Ocaml介绍
- 12. 介绍COM DLL
- 13. IOS介绍PageViewController
- 14. 宝介绍
- 15. 介绍UINavigationController Swift
- 16. 乳胶介绍
- 17. Keras Seq2Seq介绍
- 18. Node.js介绍
- 19. 介绍CakePHP
- 20. 介绍动画
- 21. Cognos 8介绍
- 22. 软件设计模式视频?
- 23. 足球/足球软件设计模式
- 24. 国家名称模式
- 25. 模块化软件设计
- 26. 计算机代数系统介绍?
- 27. 计算收入(介绍JavaScript风格)
- 28. 介绍到Windows Azure,简单的应用程序在临时envirnonment
- 29. 教程或介绍写一个简单的脚本语言?
- 30. 使用MVC,OO和设计模式的软件设计入门
我建议跳过维基百科,直接找到“设计模式”的副本。如果你不拥有它,那么尽快纠正 – tcarvin 2012-02-08 17:08:54