他们似乎在做同样的事情——将表示层逻辑与业务层的复杂性分开。那么区别是什么呢?
1 回答
两者都试图分离组件的复杂性,但是:
- View Helper的目的是让 View 更轻(真的让它们只显示东西);
- Business Delegate打算解耦任何两个组件(将管道工作的细节留给它们之间的第三个组件)。
我可以看出你的困惑来自哪里,因为它们在某种程度上看起来很相似。但是,在实践中,它们解决了两个不同的问题:
查看助手
随着系统的发展,人们倾向于开始将代码放在视图上,比如 JSP,它开始变得越来越复杂。视图不应该有很多代码。他们应该只显示数据。例如,如果您在 JSP 中进行大量计算,一方面代码将隐藏在 HTML 标记中,另一方面,您无法在系统的任何地方重用它。想象一下必须在这样的代码中进行一些维护。你会发疯的。
View Helper教您一种避免这种情况的方法,即通过创建一个类来完成繁重的工作并让 JSP 调用它而不是将所有复杂的代码保留在 JSP中,从而使Views 变得更简单。Helper
商务代表
当你有一个组件,比如说,它调用一个变化很大MyCalculator
的外部组件(比如说一个 EJB ),你最终也不得不改变你的组件。WeatherEJB
例如MyCalculator
,将 . 作为系统中一个非常重要的类,您不会一直想要更改它。如果你打破其他东西怎么办?如果有人也在另一个分支机构更改它怎么办?
此外,您只想在您的MyCalculator
业务发生变化时进行更改,而不是每次其他人更改时。
MyCalculator
当调用像其他十个组件一样时,您会看到这变得更加疯狂。你每天都会改变它!
业务代表前来救援建议:添加一个WeatherDelegate
可以执行调用WeatherEJB
并MyCalculator
使用它的类,而不是WeatherEJB
直接调用。
这样,每次WeatherEJB
更改时,您都不需要更改MyCalculator
. 您需要做的就是WeatherDelegate
相应地进行编辑。(此外,如果有一天您希望更改获取天气的方式,例如,Web 服务,那么您只需编辑WeatherDelegate
.)
到底...
...他们都说:创造一个人为你做一些工作。但是View Helper是这么说的,所以你不会在 View 上做不必要的工作;Business Delegate告诉您解耦一些组件,以便您系统的职责更好地分配。两者都使系统更易于维护。