2

他们似乎在做同样的事情——将表示层逻辑与业务层的复杂性分开。那么区别是什么呢?

4

1 回答 1

3

两者都试图分离组件的复杂性,但是:

  • View Helper的目的是让 View 更轻(真的让它们只显示东西);
  • Business Delegate打算解耦任何两个组件(将管道工作的细节留给它们之间的第三个组件)。

我可以看出你的困惑来自哪里,因为它们在某种程度上看起来很相似。但是,在实践中,它们解决了两个不同的问题:

查看助手

随着系统的发展,人们倾向于开始将代码放在视图上,比如 JSP,它开始变得越来越复杂。视图不应该有很多代码。他们应该只显示数据。例如,如果您在 JSP 中进行大量计算,一方面代码将隐藏在 HTML 标记中,另一方面,您无法在系统的任何地方重用它。想象一下必须在这样的代码中进行一些维护。你会发疯的。

View Helper教您一种避免这种情况的方法,即通过创建一个类来完成繁重的工作并让 JSP 调用它而不是将所有复杂的代码保留在 JSP中,从而使Views 变得更简单Helper

商务代表

当你有一个组件,比如说,它调用一个变化很大MyCalculator的外部组件(比如说一个 EJB ),你最终也不得不改变你的组件。WeatherEJB

例如MyCalculator,将 . 作为系统中一个非常重要的类,您不会一直想要更改它。如果你打破其他东西怎么办?如果有人也在另一个分支机构更改它怎么办?

此外,您只想在您的MyCalculator业务发生变化时进行更改,而不是每次其他人更改时。

MyCalculator当调用像其他十个组件一样时,您会看到这变得更加疯狂。你每天都会改变它!

业务代表前来救援建议:添加一个WeatherDelegate可以执行调用WeatherEJBMyCalculator使用它的类,而不是WeatherEJB直接调用。

这样,每次WeatherEJB更改时,您都不需要更改MyCalculator. 您需要做的就是WeatherDelegate相应地进行编辑。(此外,如果有一天您希望更改获取天气的方式,例如,Web 服务,那么您只需编辑WeatherDelegate.)

到底...

...他们都说:创造一个人为你做一些工作。但是View Helper是这么说的,所以你不会在 View 上做不必要的工作;Business Delegate告诉您解耦一些组件,以便您系统的职责更好地分配。两者都使系统更易于维护。

于 2013-05-05T06:51:35.500 回答