【问题标题】:Presentation Layer Objects表示层对象
【发布时间】:2009-05-16 21:58:40
【问题描述】:

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

【问题讨论】:

    标签: model-view-controller design-patterns presentation-layer


    【解决方案1】:

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

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

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

    【讨论】:

    • 那么呈现数据的同一个对象将接收新的用户输入,然后该对象将被传递到域?域决定从表示对象中提取什么?这有什么安全风险吗?
    • 一般的想法是,界面是由一个表单或一个代表网页的对象实现的,是一个将事件传递给 UI 对象的薄壳,并接收有关如何绘制/设置演示文稿的指令。 UI 对象负责获取原始输入并执行修改域的命令。这包括做任何必要的安全措施。只有当命令被执行时,域才会被触及。因此,如果安全检查失败,请不要执行该命令。
    • 这种方法的优势在于,将用户交互置于界面之后,您可以获得几个优势。首先,您将大部分特定的 UI api 抽象出来。因此,Web 标准发生了变化,Form Frameworks 发生了变化,但只要新类实现了接口,您的软件的其余部分就可以继续运行。第二次测试变得更容易,因为您可以让模拟对象实现 UI 界面。第三,您通过界面准确记录了您的软件如何与给定 UI 交互。
    猜你喜欢
    • 2011-04-17
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多