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
Model view controller 表示层对象_Model View Controller_Design Patterns_Presentation Layer - Fatal编程技术网

Model view controller 表示层对象

Model view controller 表示层对象,model-view-controller,design-patterns,presentation-layer,Model View Controller,Design Patterns,Presentation Layer,表示层应该分为表示和接收对象还是处理双向数据的单个对象?表示层应该位于处理表示和接收的接口后面。主要原因是,如果您有两个接口,一个用于呈现,另一个用于接收,理论上可能会有两个不同的对象分配给每个对象,从而导致测试中的奇怪现象 然而,如果您的接口正在发展成几十种方法,您可能需要后退一步,看看如何将其划分为更小的单元,然后将它们聚合起来。不一定基于接收和呈现,而是基于呈现UI的更多逻辑划分 例如,您可以有一个带有两个变量的IPresentationUI,一个是IPresentationDisplay

表示层应该分为表示和接收对象还是处理双向数据的单个对象?

表示层应该位于处理表示和接收的接口后面。主要原因是,如果您有两个接口,一个用于呈现,另一个用于接收,理论上可能会有两个不同的对象分配给每个对象,从而导致测试中的奇怪现象

然而,如果您的接口正在发展成几十种方法,您可能需要后退一步,看看如何将其划分为更小的单元,然后将它们聚合起来。不一定基于接收和呈现,而是基于呈现UI的更多逻辑划分


例如,您可以有一个带有两个变量的IPresentationUI,一个是IPresentationDisplay的接口,另一个是IPresentationControl的接口。您拥有的唯一注册例程将接受IPPresentationUI对象。实现PreSentation层的类将实现三个接口IPPresentationUI、IPPresentationControl和IPPresentationDisplay。

那么表示数据的同一个对象将接收新的用户输入,然后该对象将被传递到域?域决定从表示对象中提取什么?这是否存在安全风险?一般的想法是,界面由表示网页的表单或对象实现,是一个薄壳,将事件传递给UI对象,并接收有关如何绘制/设置演示文稿的说明。负责获取原始输入并执行修改域的命令的UI对象。这包括执行任何必要的安全操作。只有当命令被执行时,域才会被触动。因此,如果安全检查失败,不要执行该命令。这种方法的优点是,将用户交互置于界面之后,可以获得几个好处。首先,将大部分特定的UI api抽象出来。因此,web标准会发生变化,表单框架也会发生变化,但只要新类实现了接口,软件的其余部分就可以继续运行。第二个测试变得更容易,因为您可以让模拟对象实现UI接口。第三,您通过界面记录了软件与给定UI的交互方式。