0

我正在用 ASP.NET MVC 4 C# 构建一个网站。要求如下: 0. 通过跨多个页面收集所需的详细信息来构建订单。

  1. 在最终提交订单之前,用户应该能够来回导航(以检查输入的值)。

  2. 根据当前选择,在后续页面中可能会收集到相关性 wrt 数据。例如,如果我更改需要运送产品的国家/地区,则需要更改下一页中适用的关税和税费。因此,后续页面中的数据需要失效。如果对字段的修改不影响任何其他数据(订购数量的变化),则需要保留当前选择。

对于场景 1,我计划使用 Memento 模式。该对象将被序列化并保存在数据库中。但是,我不确定如何处理场景 2。我确信这里会有一种设计模式可以使用。代码示例肯定会有所帮助。

最初我想到了观察者模式。但是,我没有任何活跃的订阅者可以对更改采取行动。(值将保存在数据库中,并将加载到下一页/上一页)。此外,我们在这里主要查看单个存储实体(字段 1 和 2 将填充在第 1 页上,字段 3、4、5 在第 2 页中......等)

4

1 回答 1

0

我会为您的场景分离这样的职责:1.管理页面导航和交互2.对象状态的意识

因为您将根据您的场景进行复杂的页面导航,所以我建议您使用调解器来管理页面之间的交互/通信。另一方面,您需要以某种方式管理对象的状态,并且基于该状态您需要使对象无效并采取行动,因此您还需要有一个状态模式。

在此之后,有一个上层知道场景是什么,您可以使用诸如用例/应用程序控制器之类的东西来管理您的场景,使用那些已实现的模式(中介者、状态)。

于 2013-09-18T23:30:43.413 回答