【发布时间】:2012-12-27 08:29:11
【问题描述】:
我已经实现了一个简单的状态模式,它应该在我的模型类之上运行。我的应用程序是用 C# WPF 编写的。
首先,我不太确定需要将状态模式逻辑放在哪里。我应该把它放到我的控制器或服务类中吗?
假设您想在进行实际转换之前验证一些事情。 目前我已经创建了一个可以直接从状态模式类调用的规范。
但这是正确的方法吗?
interface ISpecification<T>
{
bool IsSatisfiedBy(T sut);
}
class DetermineDockingSate:ISpecification<Vehicle>
{
public bool IsSatisfiedBy(Vehicle sut)
{
throw new NotImplementedException();
}
}
这是用于状态模式内的验证/检查点。但是在进行转换之前应该在状态模式内执行的操作呢?
我会在某种服务类中实现这些操作,并直接从我的状态模式中调用这些服务类。
public override void Dock()
{
Console.WriteLine("Dock Machine and going to the Vehicle status.");
DockingStateEngineService myService = new DockingStateEngineService();
Func<string,bool> messageTarget;
messageTarget = myService.DetermineDockingSate;
bool ok = messageTarget("NOT");
this.Engine.setCurrentState(Engine.Vehicle);
}
这又是正确的方法吗?
【问题讨论】:
-
这个问题是否过于宽泛而无法提供明确的答案?
-
实际代码见这篇msdn文章:msdn.microsoft.com/en-us/magazine/cc301852.aspx,State的代码在这里(图6-7)msdn.microsoft.com/en-us/magazine/bb985799.aspx
标签: c# state-pattern