Explicação detalhada do modo de delegação

       A função básica do modelo de delegação é ser responsável pela invocação e atribuição de tarefas, semelhante ao modelo de agência, mas o modelo de agência se concentra no processo, enquanto o modelo de delegação se concentra nos resultados. O modelo de delegação é amplamente usado na primavera e também existem muitos cenários na vida real. Por exemplo, quando o chefe atribui tarefas ao gerente de projeto, o gerente de projeto atribui as tarefas aos funcionários correspondentes.

Criar interface de funcionário

interface pública IEmployee { 
    public void doing (String commond); 
}

Criar classe de funcionário, funcionário A

public class IEmployeeA implementa IEmployee { 

    @Override 
    public void doing (String commond) { 
        System.out.println ("aaaaaaaaaaaaaaaaa"); 
    } 
}

Criar classe de funcionário, funcionário B

public class IEmployeeB implementa IEmployee { 
    @Override 
    public void doing (String commond) { 
        System.out.println ("bbbbbbbbbbbbbbbbbb"); 
    } 
}

Criar classe de gerente de projeto

classe pública Leader implementa IEmployee { 

    private Map <String, IEmployee> targets = new HashMap <String, IEmployee> (); 
    public Leader () { 
        targets.put ("前端", novo IEmployeeA ()); 
        targets.put ("后端", novo IEmployeeB ()); 
    } 
    @Override 
    public void doing (String commond) { 
        targets.get (commond) .doing (commond); 

    } 
}

Criar classe Boss

public class Boss { 
    public void command (comando String, Leader leader) { 
        leader.doing (command); 
    } 
}

Criar classe de teste

public class DemoUtil { 
    public static void main (String [] args) lança Exceção { 
      
        new Boss (). command ("后端", new Leader ()); 
    } 
}

Resultado dos testes:

bbbbbbbbbbbbbbbbbbb

A partir dos resultados acima, pode-se perceber que, como o gerente de projeto atribuiu a tarefa aos funcionários de retaguarda, foi o funcionário B quem fez o trabalho arranjado pelo chefe.

DispatcherServlet na primavera é o modo de delegação usado, e o modo de delegação é implementado no final de Delegate.

Então, como dispatcherServlet implementa o modo de delegação no Spring MVC?

 

Criar classe executiva

public class ItemController { 
    public void getItemById () {}; 
}
classe pública OrderController { 
    public void getOrderById () {}; 
}

Criar classe DispatcherServlet

public class DispatcherServlet extends HttpServlet { 
    private void doDispatch (HttpServletRequest request, HttpServletResponse response) { 
        String uri = request.getRequestURI (); 
        String id = request.getParameter ("mid"); 

        if ("getItemById"). equals (uri) { 
            new ItemController (). getItemById (id); 
        } else if ("getOrderById" .equals (uri)) { 
            new OrderController (). getOrderById (id); 
        } else { 
            response.getWriter (). write ("404 não encontrado"); 
        } 
    } 

    serviço void protegido (HttpServletRequest req, HttpServletResponse resp) { 
        try { 
            doDispatch (req, resp);
        } catch (Exception e) { 
            e.printStackTrace (); 
        } 
    } 
}

Esse é o fim do modelo de delegação, vamos dormir.

 

Acho que você gosta

Origin blog.csdn.net/wzs535131/article/details/108589937
Recomendado
Clasificación