委任モデルの基本的な機能は、エージェンシーモデルと同様に、タスクの呼び出しと割り当てを担当することですが、エージェンシーモデルはプロセスに焦点を合わせ、委任モデルは結果に焦点を合わせます。委任モデルは春に広く使用されており、実際には多くのシナリオもあります。たとえば、上司がプロジェクトマネージャーにタスクを割り当てると、プロジェクトマネージャーは対応する従業員にタスクを割り当てます。
従業員インターフェースの作成
パブリックインターフェイスIEmployee { public voiddoing(文字列commond); }
従業員クラス、従業員Aを作成します
パブリッククラスIEmployeeAはIEmployee {を実装します @オーバーライド public void doing(String commond){ System.out.println( "aaaaaaaaaaaaaaaa"); } }
従業員クラス、従業員Bを作成します
パブリッククラスIEmployeeBはIEmployee {を実装します @オーバーライド public void doing(String commond){ System.out.println( "bbbbbbbbbbbbbbbbbb"); } }
プロジェクトマネージャークラスを作成する
パブリッククラスリーダーはIEmployeeを実装します{ プライベートマップ<文字列、IEmployee>ターゲット=新しいハッシュマップ<文字列、IEmployee>(); public Leader(){ target.put( "前端"、newIEmployeeA()); target.put( "后端"、new IEmployeeB()); } @オーバーライド public void doing(String commond){ target.get(commond).doing(commond); } }
ボスクラスを作成する
パブリッククラスボス{ public void command(String command、Leader Leader){ Leader.doing(コマンド); } }
テストクラスを作成する
パブリッククラスDemoUtil { public static void main(String [] args)はException {をスローします new Boss()。command( "后端"、newLeader()); } }
試験結果:
bbbbbbbbbbbbbbbbbb
上記の結果から、プロジェクトマネージャーがバックエンドの従業員にタスクを割り当てたため、上司が手配した仕事を行ったのは従業員Bであることがわかります。
SpringのDispatcherServletは使用される委任モードであり、委任モードはDelegateの最後に実装されます。
では、dispatcherServletはSpringMVCで委任モードをどのように実装しますか?
ビジネスクラスを作成する
パブリッククラスItemController { public void getItemById(){}; }
パブリッククラスOrderController { public void getOrderById(){}; }
DispatcherServletクラスを作成します
パブリッククラスDispatcherServletはHttpServletを拡張します{ private void doDispatch(HttpServletRequest request、HttpServletResponse response){ 文字列uri = request.getRequestURI(); 文字列id = request.getParameter( "mid"); if( "getItemById")。equals(uri){ new ItemController()。getItemById(id); } else if( "getOrderById" .equals(uri)){ new OrderController()。getOrderById(id); }そうしないと{ response.getWriter()。write( "404 not found"); } } protected void service(HttpServletRequest req、HttpServletResponse resp){ 試してください{ doDispatch(req、resp); } catch(Exception e){ e.printStackTrace(); } } }
これで委任モデルは終了です。寝ましょう。