您的位置:首页 > 娱乐 > 八卦 > 安阳网站公司哪家好_如何进行企业营销型网站建设规划_推广方式有哪些?_百度客服人工电话24小时

安阳网站公司哪家好_如何进行企业营销型网站建设规划_推广方式有哪些?_百度客服人工电话24小时

2025/2/28 13:43:10 来源:https://blog.csdn.net/dhrmt/article/details/142931727  浏览:    关键词:安阳网站公司哪家好_如何进行企业营销型网站建设规划_推广方式有哪些?_百度客服人工电话24小时
安阳网站公司哪家好_如何进行企业营销型网站建设规划_推广方式有哪些?_百度客服人工电话24小时

适配器模式


引入

生活中的例子:当我们使用手机充电时,充电器起到了转换器的作用,它将家用的220伏特电压转换成适合手机充电的5伏特电压。

适配器模式的三种类型

命名原则:适配器的命名应基于资源如何传递给适配器来进行。

  1. 类适配器模式:这种方式直接通过类实现。在适配器(Adapter)中,源(src)被当做一个类直接继承。
  2. 对象适配器模式:这种方式通过持有对象来实现。在适配器(Adapter)中,源(src)作为一个对象被持有。
  3. 接口适配器模式:这种方式通过实现接口来应用。在适配器(Adapter)中,源(src)作为一个接口被实现。
具体代码示例
类适配器模式类图

image-20241014231958151

类适配器模式

package com.lucifer.A07_Adapter.classAdapter;
//适配器
public class voltageAdapter extends voltage220v implements Ivoltage5v{public int output5v() {int src = output220v();int dst = src/44;return dst;}
}

缺点:使用了继承,且适配器中有src,增加使用成本

对象适配器模式


package com.lucifer.A07_Adapter.objectAdapter;
//适配器
public class voltageAdapter implements Ivoltage5v {private voltage220v voltage220v;//通过构造器传入--聚合关系public voltageAdapter(com.lucifer.A07_Adapter.objectAdapter.voltage220v voltage220v) {this.voltage220v = voltage220v;}public int output5v() {int dst = 0;if(null!=voltage220v){int src = voltage220v.output220v();System.out.println("使用对象适配器进行转化");dst = src/44;System.out.println("适配完成");return dst;}else {return 0;}}
}

采用了合成复用原则(泛化->聚合)

接口适配器模式

package com.lucifer.A07_Adapter.interfaceAdapter;public class client_m1 {public static void main(String[] args) {absAdatpter absAdatpter = new absAdatpter(){//只需要关系需要使用的方法public void m1(){System.out.println("使用了m1的方法");}};absAdatpter.m1();}
}
在源码里面的使用
  1. SpringMvc 中的 HandlerAdapter, 就使用了适配器模式

  2. 使用 HandlerAdapter 的原因分析:

可以看到处理器的类型不同,有多重实现方式,那么调用方式就不是确定的,如果需要直接调用 Controller 方
法,需要调用的时候就得不断是使用 if else 来进行判断是哪一种子类然后执行。那么如果后面要扩展 Controller,
就得修改原来的代码,这样违背了 OCP 原则。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com