2012-04-19 13 views
0

はどのようにビジネスロジックを実行するJavaクラスからのStruts Actionクラスを分離するための支柱フレ​​ームワークとデリゲートパターンを使用することができますか?Strutsとの委任パターン

答えて

0

さて、(例えば、ユーザを迎える)、あなたには、いくつかの商務ロジックを作るインターフェースを持っているとしましょう:

IBussinessLogic

public interface IBussinessLogic{ 
    public void greetUser(String username); 
} 

そして、あなたはそのインターフェイスを実装するクラスを使用します。

BussinessLogic

public class BussinessLogic implements IBussinessLogic{ 
     public void greetUser(String username) { 
      System.out.println("Hello " + username + "."); 
     } 
} 

次に、あなたのアクションクラスであなたが委任することができ、無申し訳ありませんが、あなたはあなたの商務・ロジック・クラスのデリゲートする必要があります。前方に戻って、制御フロー:

... 
IBussinessLogic bl = new BussinessLogic(); 
bl.greetUser(myForm.getUsername()); 
... 

アクションは、いくつかのresponsabilitiesを持って、覚えておいてください。 ..しかしそれらのどれもあなたのアプリケーションのビジネスロジックを実装する必要はありません。インターフェースを使用することで、依存関係注入やその他の技術を使用していても、今後IBussinessLogicのさまざまな実装でアプリケーションを再配線できます。

これは、デリゲートパターンの非常に簡単な例です。あなたの行動(委任者)は、タスクを達成するために代理人(BussinessLogic)を信頼します。

+0

私はそれらについて尋ねる問題に持っています。まず、デリゲートパターンとファサードパターンの違いは何ですか?二Strutsアクションクラス内のファサードを使用するための良い方法は何か、私は私のファサードは、より汎用的にすることができますどのように私は何かをする事業にリクエストからパラメータを渡す必要があるStrutsアクションクラス内を意味します。 –

+0

デリゲートパターンを使用すると、異なる層に責任を分けることができます。 bussinessロジックを別のレイヤーにするのは良い設計戦略です。要求オブジェクトをbussinessロジックレイヤーに送るのは悪い決断です。あなたがそうするなら、bussinessレイヤーをあなたのウェブインターフェースに結びつけています。今後、スイングインターフェイスなどのアプリケーションを再利用することはできません。 ファサードパターンを使用すると、ソフトウェアライブラリ/パッケージへのアクセスを容易にすることができます。元のライブラリ/パッケージよりも複雑さの少ないインターフェースを実装しています。 – JML