委任モードの詳細な説明

       委任モデルの基本的な機能は、エージェンシーモデルと同様に、タスクの呼び出しと割り当てを担当することですが、エージェンシーモデルはプロセスに焦点を合わせ、委任モデルは結果に焦点を合わせます。委任モデルは春に広く使用されており、実際には多くのシナリオもあります。たとえば、上司がプロジェクトマネージャーにタスクを割り当てると、プロジェクトマネージャーは対応する従業員にタスクを割り当てます。

従業員インターフェースの作成

パブリックインターフェイス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();
        }
    }
}

これで委任モデルは終了です。寝ましょう。

 

おすすめ

転載: blog.csdn.net/wzs535131/article/details/108589937