2011-07-14 9 views
0

私はStruts 1.1を使用しています(私を始められないでください)、アップグレードは現在オプションではありません。残念ながら、シングルトン・アクション・アプローチ全体が私たちを苛立たせ、インスタンス変数などを使うことができないので、アクションが複雑になります。すべての必要なオブジェクトをパラメータとしてすべてのメソッドに渡す必要があります。私はインスタンス変数を使用して好むので、私はこのように、アクションの実行方法からのリクエストごとにアクションの新しいインスタンスを作成したいと思います:アクションのexecute()メソッドから新しいStruts Actionインスタンスを作成する際に問題がありますか?

public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
    return (new SaveUserDataAction()).instanceExecute(mapping, form, request, response); 
} 

public ActionForward instanceExecute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 
    // all normal execute stuff goes here 
} 

これは正常に動作しますが、私は思ったんだけど、あなたの人々の場合このアプローチの問題を考えることができます。私はこれが余分なオブジェクトの作成のために余分なCPUサイクルを必要とすることを知っていますが、最近の知恵は、それぞれの要求に対して1トンのオブジェクト作成が行われ、もう1つは気づかれなくなります。可読性とメンテナンス性を向上させる価値はありません。さらに深刻な欠点がありますか?

また、このセミクラジーアプローチよりも簡単な方法がありますか?おそらくStrutsがサポートするアプローチですか?

+0

Strutsアクションはシングルトンではありません。 –

+0

Struts 1.1では、それらはシングルトンのように扱われます。つまり、同じインスタンスが異なるスレッドで使用されます。 – Vlad

答えて

1

Struts 1.1 Actionsは、ビジネス・ロジックを行うためのものではありません。Strutsアプリケーションでは

を、ビジネスロジックのほとんどは、JavaBeansを使用して表すことができます。アクションは、実際の動作を知らずにJavaBeanのプロパティを呼び出すことができます。これはビジネスロジックをカプセル化し、アクションがエラー処理とどこに制御を移すことに集中できるようにします。

問題は、余分なインスタンスを作成していることがありますが、代わりに、いくつかのヘルパー/ DAOのアクションの余分インスタンスを作成しているということではありません。

+0

ご回答いただきありがとうございます。私はビジネスロジックのアクションのこの新しいインスタンスを作成するのではなく、典型的なアクションロジックの作成に興味があります。私はインスタンス変数を使用して、ビジネスロジックを実行するためにビジネスレイヤーにさまざまなオブジェクトを作成したいと考えています。 – Cameron

+0

ビジネスロジックを実行していない場合でも、なぜインスタンス変数が必要ですか?データの検証はValidatorFormsに属し、アクセス制御はFilterに配置し、データベース操作はモデルのJavaBeansに配置する必要があるため、アクションはちょうど薄い接着剤層でなければなりません。あなたはそのアクションで何をしていますか? – Vlad

+0

私たちは単に接着剤をたくさん持っているのですか?具体的には、フォームで多くの検証を実行していますが、負荷がかかるデータに依存するものがあります。それは高価で、アクションの後半で(ビジネスレイヤメソッドに渡すために)データが必要になるため、アクションでロードしてそこで検証を行います。いくつかの承認については同じ回答 - 他の場所では単純な承認が行われますが、高価なデータが読み込まれるまでは許可されません。 1つのアクションにつき1つの操作があっても、多分改善することができましたが、悲しいことにそれらはグループ化されており、すぐに外に出ることはありません。 – Cameron

関連する問題