ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ActionとLogicの分離

s2jsfをいろいろ見てるんだが、actionとlogicの役割を分ける必要って実際のところあるんだろうか? と激しく疑問。

この話は、S2JSFというより、goyaの話になりそうですが、Actionはプレゼンテーション層のクラスであり、Logicはビジネスロジック層のクラスです。
それぞれ、役割が違うので、分けるほうが自然だと思っています。
プレゼンテーションモデルとドメインモデルを分けずに、一つのモデルにすることもできますが、そうすると多くの場合、かえって複雑になってしまうのと一緒です。
技術的な観点でいえば、ほとんどの場合、Actionのライフサイクルはリクエストであり、Logicのライフサイクルはシングルトンです。StrutsのようにActionのライフサイクルをシングルトンにすることもできますが、その場合は、リクエストやセッションから情報を受け取るために、Servlet API(or JSF API)に依存する必要がでてきます。
また、ActionとLogicを統合するのは、役割を持ちすぎる危険性が増えると思います。
Actionという名前は、Strutsからの移行組みが分かりやすいようにという意味であの名前になっています。