Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Design patterns 模型视图控制器-如何划分代码?_Design Patterns_Model View Controller_Architecture_Architectural Patterns - Fatal编程技术网

Design patterns 模型视图控制器-如何划分代码?

Design patterns 模型视图控制器-如何划分代码?,design-patterns,model-view-controller,architecture,architectural-patterns,Design Patterns,Model View Controller,Architecture,Architectural Patterns,我有一个更一般的问题,关于如何在MVC模式中划分模型、视图和控制器的代码和职责。为了更好地理解,我将使用一个示例案例 我的问题 应用程序分为模型、视图和控制器。在视图中应显示的模型级操作期间,如何处理错误 我想到了两种可能性: a) 模型保存错误字符串并通知控制器和视图。然后,视图轮询模型中的错误字符串并将其保存。之后,控制器告诉视图显示错误 b) 模型将错误返回给控制器,控制器将错误传递给要显示的视图 您认为什么最适合MVC模式? 或者什么更接近MVC模式 事先非常感谢主要有两种方法: 首先,

我有一个更一般的问题,关于如何在MVC模式中划分模型、视图和控制器的代码和职责。为了更好地理解,我将使用一个示例案例

我的问题

应用程序分为模型、视图和控制器。在视图中应显示的模型级操作期间,如何处理错误

我想到了两种可能性:

a) 模型保存错误字符串并通知控制器和视图。然后,视图轮询模型中的错误字符串并将其保存。之后,控制器告诉视图显示错误

b) 模型将错误返回给控制器,控制器将错误传递给要显示的视图

您认为什么最适合MVC模式? 或者什么更接近MVC模式


事先非常感谢

主要有两种方法:

首先,我们应该记住

因此,在更改模型状态时,我们期望命令出现错误

您的模型可以抛出某种类型的
businessmodeleexception
异常,或者返回值为
None
则表示成功(无错误),并且
Some
包含有关错误的信息

拥有操作结果可以更容易地在验证期间聚合错误,例如,通过方法的签名明确地通知调用方返回的错误。例如,在C#中,如果没有正确地记录,那么可以抛出哪些异常就不是很明显了。
如果有大量操作,其中一些操作返回错误,则异常也不利于性能。
当异常未被抛出时,我们通常暗示应用程序没有损坏的状态,操作结果更自然地传达了这一点,而异常需要约定(无论是否可恢复)

另一方面,异常可以跨层传播到它们真正需要处理的地方。这使得代码更干净:例如,我根本不需要捕获业务逻辑异常,而是在MVC中生成一个异常过滤器,它可以正确地将其转换为适当的htmls状态代码和错误消息。中间层也不知道所有与错误相关的厨房

异常也更容易适应面向方面的编程

这两种方法可以结合使用


我更喜欢异常。

根据我在某些框架中的经验,您可以在控制器中捕获控制器所做操作的异常—写入模型。然后,您可以返回一个适合该错误的视图。谢谢您的回答。因此,在MVC中,控制器将捕获模型上操作的异常,并将其传递给要显示的视图?我的答案是肯定的。Controller知道视图(客户端表示),他负责为视图准备数据。但是,如果我们决定在不同的用户授权级别上,由于安全要求,我们需要不同的错误表示,那么这种准备可能会有一个相当复杂的逻辑。我想,这篇博文和评论可能会让你感兴趣:谢谢,看起来非常有趣!