我在ASP.NET MVC 4 C#中构建一个网站。 要求如下: 0.通过跨多个页面收集所需的详细信息来构建订单。
用户应该能够在最终提交订单之前来回导航(检查输入的值)。
根据当前选择,可能存在后续页面中收集的依赖关系w.r.t数据。例如,如果我更改了需要运送产品的国家/地区,则自定义职责&需要更改下一页适用的税金。因此,后续页面中的数据需要无效。如果对字段的修改不会影响任何其他数据(订购数量的变化),则需要保留当前选择。
对于方案1,我计划使用Memento模式。该对象将被序列化并保存在数据库中。 但是,我不确定如何处理方案2.我确信会有一个我可以在这里使用的设计模式。代码示例肯定会有所帮助。
最初我想到了Observer模式。但是,我没有任何订阅者可以对更改执行操作。(值将保存在DB中,并将加载到下一页/上一页)。此外,我们主要在这里查看单个存储实体(第1页和第2页将填充在第1页,第3,4页第3,4,5页......等等)
答案 0 :(得分:0)
我会为你的场景分开这样的责任: 1.管理页面导航和交互 2.对物体状态的认识
因为您将根据您的方案进行复杂的页面导航,所以我建议您使用Mediator来管理页面之间的交互/通信。 另一方面,你需要以某种方式管理对象的状态,并根据你需要使状态失效并采取行动的状态,所以你还需要有一个状态模式。
在此之后,有一个级别的上层知道场景是什么,您可以使用诸如使用这些实现模式管理场景的用例/应用程序控制器(Mediator,State)。