需要设计模式

时间:2018-08-30 12:43:23

标签: asp.net-mvc asp.net-mvc-4 design-patterns

客户可以下单。每个订单直到交付为止都经历不同的阶段。 假设有A,B,C,D,E多个阶段。在这些阶段中移动将由单个客户端手动完成。 从A-> B(或)E,B-> C,C-> D(或)E

每个阶段都需要用户提供不同的输入才能进入下一阶段。所有这些输入都是系统中建模的不同实体。

在用户界面级别中,我有一个下拉菜单。如果当前状态为A,则下拉列表显示B和E。如果B,则显示C。 下拉列表的值来自主表中的数据库。选择不同的选项后,我将使用JQuery向用户显示不同的表单。

我在.cshtml页面和服务器端的代码中堆积了多个if。有没有更好的方法可以做到这一点? 在这种情况下有什么设计模式对我有帮助吗?

如果我做错了什么,请提出建议。

1 个答案:

答案 0 :(得分:2)

此响应不是特定于ASP的,并且适用于任何编程环境。

您的系统具有明确定义的阶段以及这些阶段之间的过渡。这非常适合状态模式

状态模式为每个状态提供一个具体上下文类(保存当前状态),一个抽象状态类和一个具体状态子类< / strong>。在您的情况下,您具有明显的状态A,B,C,D,E,但您可能还需要一个ENTRY状态进行初始化,并需要一个EXIT状态进行清理。

例如,状态A将封装所有逻辑,以为阶段A调用正确的菜单和表格,并处理用户输入。 A国还负责向B国过渡。

通过应用程序的控制流可以用状态转换图说明。在http://www.cs.unc.edu/~stotts/145/CRC/state.html

上了解它们

您可以在此处阅读有关使用ASP实现的状态模式的信息 https://www.dofactory.com/net/state-design-pattern

状态模式的优点是您可以添加新的状态,而无需复杂的逻辑,并且摆脱了大的if / else块,否则将需要大块的if / else来控制程序流程。您仍将在每个状态下做出决定来决定下一个状态,但这是非常可控的。

学习状态模式的最佳方法是做一些示例,然后从应用到简单的情况开始,直到您有信心重构应用程序为止。