ホーム>source

最近、EJBコードをファサード プレゼンテーション層(JSF)で使用されるいくつかのメソッドを提供するパターン。しかし、ビジネスロジックの一部では、Facadeのメソッドが呼び出され、使用されています。

Facadeは内部の機能ではなく外部の世界を提供することになっていると思うので、これは少し奇妙に思えます。私は正しいですか、それとも偏執狂ですか?

これはラフです(愚か)状況を説明する図:

あなたの答え
  • 解決した方法 # 1

    いいえ、私の意見ではいけません。ファサードは、レイヤー間のインターフェースを調整するためにあります。レイヤー内からも使用しないでください。

    そして、それも必要ではありません。私は getProductById を想定しています   Product をフェッチするある種のリポジトリへの呼び出しを委任します 。依存性注入を使用して、適切なクラスにリポジトリを注入できます。小さなUMLサンプルで私はたった今作成しました(しばらくの間、いくつかの接続が正しくない場合は許してください)このアプローチを示します。

    今、 Report  クラスは ProductRepository にアクセスできます  Façadeクラスを経由する代わりに、そこからデータをフェッチできます。

  • 解決した方法 # 2

    はい、そうです! Facadeは、クライアントに複雑さと無計画を隠すことにより、複雑なもののインターフェースを提供します。クライアントは JSF  ページの表示、別のBeanまたはサービス。それに応じて使用している限り、技術的な問題はありません!

    しかし、一般的には、従来の方法でレイヤーを作成した場合、それはあなたが説明したものとは異なるはずです。

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ javascript - redux-sagaの登録用データの受け渡しに関する問題