Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中管理对象依赖关系的设计模式#_C#_Oop_Design Patterns_Web - Fatal编程技术网

C# C语言中管理对象依赖关系的设计模式#

C# C语言中管理对象依赖关系的设计模式#,c#,oop,design-patterns,web,C#,Oop,Design Patterns,Web,我正在用ASP.NETMVC4C构建一个网站。 要求如下: 0通过跨多个页面收集所需的详细信息来建立订单 在最终提交订单之前,用户应该能够来回导航(检查输入的值) 根据当前选择,后续页面中收集的数据可能与w.r.t数据相关。例如,如果我更改了产品需要运往的国家,则需要更改下一页中适用的关税和税收。因此,后续页面中的数据需要作废。如果对字段的修改不影响任何其他数据(订购数量的变化),则需要保留当前选择 对于场景1,我计划使用Memento模式。对象将被序列化并保存在数据库中。 但是,我不确定如何处

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

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

  • 根据当前选择,后续页面中收集的数据可能与w.r.t数据相关。例如,如果我更改了产品需要运往的国家,则需要更改下一页中适用的关税和税收。因此,后续页面中的数据需要作废。如果对字段的修改不影响任何其他数据(订购数量的变化),则需要保留当前选择

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


    最初我想到了观察者模式。但是,我没有任何激活的订阅服务器可以对更改进行操作。(值将保存在DB中,并将加载到下一页/上一页)。此外,我们这里主要关注单个存储实体(第1页的字段1和2将填充,第2页的字段3、4、5将填充……等等)

    对于您的场景,我将这样划分职责: 1.管理页面导航和交互 2.对物体状态的感知

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


    在此之后,有一个更高级别的人知道场景是什么,您可以使用诸如usecase/application controller之类的东西,使用这些实现的模式(中介、状态)管理您的场景。

    谢谢。。。很抱歉反应太晚。