それらは同じことをしているように見えます-プレゼンテーション層のロジックをビジネス層の複雑さから分離します。違いは何ですか?
1 に答える
どちらもコンポーネントの複雑さを分離しようとしますが、次のようになります。
- View Helperの目的は、ビューを軽量化することです (実際には、ビューのみを表示するようにします)。
- ビジネス デリゲートは、2 つのコンポーネントを分離する予定です (配管作業の詳細は、その間にある 3 つ目のコンポーネントに任せます)。
彼らはある意味で似ているので、あなたの混乱がどこから来ているのか分かります. ただし、実際には、次の 2 つの異なる問題に対処します。
ビューヘルパー
システムが成長するにつれて、人々はビューにコード (JSP など) を配置し始める傾向があり、ビューはますます複雑になり始めます。ビューに多くのコードを含めることは想定されていません。データのみを表示することになっています。たとえば、JSP に大量の計算を入れると、一方ではコードが HTML タグに隠され、他方ではシステム内のどこでも再利用できなくなります。このようなコードでメンテナンスを行う必要があると想像してください。あなたは夢中になるでしょう。
View Helperは、すべての複雑なコードを JSP内に保持するのではなく、クラスを作成して重い作業を実行し、JSP 呼び出しを行うことでView をより単純にすることで、それを回避する方法を教えてくれます。Helper
ビジネスデリゲート
MyCalculator
たとえば、多くの変更を行う外部コンポーネント (たとえば EJB ) を呼び出すコンポーネントがある場合、コンポーネントWeatherEJB
も大幅に変更する必要があります。
たとえば、 をシステムの非常に重要なクラスと考えMyCalculator
てください。常に変更する必要はありません。他のものを壊したらどうしますか?誰かが別の支店でも変更している場合はどうなりますか?
その上、他の誰かが変わるたびにではなく、MyCalculator
ビジネスが変わったときにのみ変更したいと思うでしょう。
他の10 個のコンポーネントのMyCalculator
ように呼び出すと、これがさらにクレイジーになることがわかります。毎日変えていきます!
Business Delegateが助けになります。直接呼び出すのではなく、呼び出しWeatherDelegate
を実行できるクラスを追加して、それWeatherEJB
を使用します。MyCalculator
WeatherEJB
このように、WeatherEJB
変更のたびに変更する必要はありませんMyCalculator
。それに応じて編集するだけですWeatherDelegate
。(また、いつか Web サービスなどで天気を取得する方法を変更したい場合、編集する必要があるのはWeatherDelegate
.
最終的には...
...彼らは両方とも言う: あなたのために何かをするために誰かを作成します。しかし、View Helperは、ビューで不必要な作業を行わないようにと言っています。Business Delegateは、一部のコンポーネントを切り離すように指示するため、システムの責任がより適切に分散されます。どちらもシステムの保守を容易にします。