试图在intertubes上找到一些例子。我正在考虑国家或战略模式,但如果有人有任何战争故事,他们可以指出我的例子或资源,将不胜感激。
我不/不能使用Windows工作流程。
我的例子是我有一个复杂的向导,它根据用户正在做什么以及用户是谁来改变流程的状态。
例如:
干杯 约翰
答案 0 :(得分:6)
State模式(wikipedia link)怎么样?
public abstract class State
{
/// <summary>
/// Holds the current state we're in.
/// </summary>
public State CurrentState
{
get;
set;
}
public virtual string Cancelled(State context)
{
return "";
}
public virtual string RequestedByUser(State context)
{
return "";
}
public virtual string RequestedByManager(State context)
{
return "";
}
}
public class CancelledState : State
{
public override string Cancelled(State context)
{
context.CurrentState = new SittingState();
return "Cancelled.";
}
public override string RequestedByUser(State context)
{
context.CurrentState = new RequestedByUserState();
return "Requested by User.";
}
public override string RequestedByManager(State context)
{
return "You can't do this before it's been requested by the User";
}
}
// (RequestedByUserState and RequestedByManagerState classes have been cut out)
如您所见,该模式确实非常适合。
如果存在安全问题,Chain of Responsibility也可能具有相关性。如果维基百科的文章毫无意义,那么this book就有两个很好的例子。另一个是向导的命令模式。它们都不完美,但它们会给你一些好主意。
答案 1 :(得分:0)
设计模式不是特定于任何语言(C#设计模式?)。
我建议你应该专注于为你的工作流实现构建一个框架,使用不同的模式,而不是只考虑一个可能满足你所有需求的理想模式。
最近在Javaworld上阅读了一篇关于使用Dispatcher模式实现工作流的文章。
请参阅http://www.javaworld.com/javaworld/jw-10-2001/jw-1019-dispatcher.html
您也可以考虑在C#中评估备用的现有开源工作流框架,例如NetBPM http://www.netbpm.org/
答案 2 :(得分:0)
“责任链”或多或少类似于工作流程风格。这是一个很棒的模式,可以使用极大的灵活性选项。我强烈建议你试试。