下記の様な構成でとりあえずモックを作ってみることにする。
Soil --> グローバルコントローラ Service --> サービスコントローラ Context --> コンテキスト(文脈)は何でもあり。Soilは複数のアクションを持つわけだけど、そのアクションを特定する方法が今回の課題。
RailsだとRoutes.rbに相当する部分。
やはり、WebApplicationだからincoming request,output responseという概念は
代わり無いので、何かしらのリクエストをキーにするしか方法が無い。
今回、面倒なのは、
というところ。
複数のアクションの関連性を定義する為に、地図が必要になるわけだ。
Soilが何もかもしる必要は無いので、イメージとしてはSoilは地図を持って
指定のサービスをつまみに行くイメージ。
呼び出し口は下のようになるのかな?
class Soil{ public void dispatch(HttpServletRequest req){ String param = req.getParameter('???'); String serviceName = ServiceMap.find(param); Service srv = (Service) Class.forName(serviceName).newInstance(); if("DONE" == service.getStatus()){ next(); }else if("PROGRESS" == service.getStatus()){ current(); }else if("BACK" == service.getStatus(){ back(); }else{ //error } } }この中のここをどのようにしていくか?
String param = req.getParameter('???'); String serviceName = ServiceMap.find(param);これが問題だ。
リクエストを後段に渡すことで、サービスのインスタンスを作るのが役割だから。
これは仕様が無いんだろうな。まだそこをどうラップするとかは考えてないけど。。。
リクエストが必要だとすれば、判定すべきは最初のリクエストだけなのか?
最初のクラス名さえ分かってしまえば、その後どのようにしていくのかは
自ずと決まる。それを定義するのがServiceMapの役割だから。
となると、もう少しコードの書き方も変わって来るのか?
うーん、少し苦しくなってきた。考えがまとまったら、続きを書くことにしよう。
0 件のコメント:
コメントを投稿