}
你会看到non_后面跟的都是一个个动作。在这里分清状态和动作是很重要的,不然就很难理清了。还有有时一个动作对应着
前后状态,不要出现重复的状态比如:created(创建完成)和non_assign(待分配)在这里就是所谓的重复状态。
这些状态其实就是贯穿着整个流程的主线,类似于一个城市的主干道一样。我们只要抓着这样一天线索来思考,就能够化繁为
简。
每个步骤可配置,各个步骤不相耦合,实现调用端一致性——责任链模式
而责任链模式,正是为此而生的!
在这里,我采用了责任链模式来封装这种步骤的不确定带来的变化。
首先我们有必要先了解一下,什么是责任链模式:
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。
将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
适用场景:
1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定;
2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;
3、处理一个请求的对象集合应被动态指定。
可以看到无论是上面哪种场景,都存在一个多对一的关系。在这个流程中,一很明显对应着服务流程(说白了就是数据库服务
任务的一条记录)。大部分情况下,我们都在完成对一条服务中相关字段的修改,同时置不同的服务状态。而多,在这里应该
对应着不同的步骤。
下面来看看实现:
/// <summary>
/// 维修服务 处理器-抽象基类
/// </summary>
public abstract class ServiceHandler
{
protected ServiceHandler nextHandler;
public virtual void Handle(MaintenanceForm maintenanceForm, object otherParams)
{
if (nextHandler!=null)
{
nextHandler.Handle(maintenanceForm, otherParams);
}