欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

策略模式和适配器模式的区别

程序员文章站 2022-06-28 08:23:10
文章目录策略模式适配器模式总结策略模式对于策略模式来说,在调用者看来每个策略都是已知的策略,对于会返回怎样的结果,有着一个预期例如调用Arrays.sort(T[], java.util.Comparator) public static void main(String[] args) { List lists = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);...

策略模式

对于策略模式来说,在调用者看来每个策略都是已知的策略,对于会返回怎样的结果,有着一个预期
例如调用Arrays.sort(T[], java.util.Comparator<? super T>)

    public static void main(String[] args) {
        List<Integer> lists = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        //java.util.Arrays.sort(T[], java.util.Comparator<? super T>)
        //选择算法
        //对大于5的数升序排列
        //对小于等于五的数降序排列
        lists.sort((num1, num2) -> {
            if (num2>5)
            return 1;
            else return -1;
        });
        for (Integer integer : lists) {
            System.out.print(integer+",");
        }
    }

策略模式和适配器模式的区别
可以看到,按照选择的策略给出了期待的结果

适配器模式

对于适配器来说,在调用者看来目标多是未知的接口,但是一定是流程中指定的哪一环

org.springframework.web.servlet.DispatcherServlet#doDispatch
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
...
				// Determine handler adapter for the current request.
				HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
...

				// Actually invoke the handler.
				mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
...

策略模式和适配器模式的区别

可以看到当ha.handle编写时,它并不知道会调用HelloController#hello,但是它知道这里进行调用目标方法的处理,之后进行调用applyPostHandle
策略模式和适配器模式的区别

总结

策略模式更关心结果,适配器模式更关心过程

本文地址:https://blog.csdn.net/as513385/article/details/110267087