策略模式和适配器模式的区别
程序员文章站
2022-04-07 18:23:08
文章目录策略模式适配器模式总结策略模式对于策略模式来说,在调用者看来每个策略都是已知的策略,对于会返回怎样的结果,有着一个预期例如调用Arrays.sort(T[], java.util.Comparator super T>) 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
上一篇: Nacos源码之服务注册源码解析