静态网站培训,营销推广策划,网站开发主要内容和要求,python做软件界面目录
适配器模式概念
主要实现方式
主要组成
UML用例图
代码示例
生活场景
应用场景 适配器模式概念
适配器模式属于结构型设计模式#xff0c;它的主要目的是将一个类的接口转换成客户端所期望的另一种接口形式#xff0c;使得原本接口不兼容的类可以一起工作。
主…目录
适配器模式概念
主要实现方式
主要组成
UML用例图
代码示例
生活场景
应用场景 适配器模式概念
适配器模式属于结构型设计模式它的主要目的是将一个类的接口转换成客户端所期望的另一种接口形式使得原本接口不兼容的类可以一起工作。
主要实现方式
类适配器。类适配器的实现需要支持多继承(如C)因为该类型适配器是通过多继承被适配者和目标接口由于目标接口可以是抽象类或者接口被适配者可以是类或接口。所以两者都有可能是类。自然不适用于单继承。对象适配器。对象适配器不需要多继承单继承就行(如Java)。该类型适配器通过将被适配器者作为属性引用就像Spring中的属性注入。这种方式更加灵活因为它不依赖于被适配者的具体实现只需要知道它的接口即可。
主要组成
目标接口(target)。 客户端所期待的接口。目标接口可以是抽象类或接口定义了客户端期望的方法。被适配者(adaptee)。需要适配的类或接口。包含一些客户端可能需要的方法但接口形式与客户端所期望的接口不兼容。适配器(adapter)。适配器类是核心它将被适配者的接口转换成目标接口。主要有两种类适配器和对象适配器。通过实现目标接口被适配者作为该类属性以及传入被适配者实例(适用对象适配器)或者继承被适配者类(适用类适配器)目的调用被适配者的方法。最终返回一个目标实例也就是适配器实例通过调用适配器中的方法完成接口转换。
UML用例图
以对象适配器为例 代码示例 以对象适配器为例举个例子生活中的插头有两脚的、三脚的之间就需要转换。接下来使用代码将三脚转为两脚插头使用。
两脚插头接口目标
// 两脚插头接口
public interface TwoPinPlug {void connectionTwoPin();
}
三脚插头类被适配者
// 三角插头接口
public interface ThreePinPlug {void connectionThreePin();
}// 三角插头实现
public class ThreePinPlugImpl implements ThreePinPlug {Overridepublic void connectionThreePin() {System.out.println(三角插头连接成功);}
}
适配器类
// 适配器类将三脚转为两脚实现两脚接口成为两脚接口的子类
public class PlugPinAdapter implements TwoPinPlug {// 三角(源)属性注入private ThreePinPlug threePlug;// 有参构造传入三脚(源)接口public PlugPinAdapter(ThreePinPlug threePlug) {this.threePlug threePlug;}Overridepublic void connection() {// 调用三脚(源)接口threePlug.connection();System.out.println(通过适配器转换...);System.out.println(转换成为两脚插头);}
}
客户端
public class Client {public static void main(String[] args) {// 创建一个三脚插头实例ThreePinPlugImpl threePlug new ThreePinPlugImpl();// 创建插头适配器传入三脚插头实例返回两脚插头实例TwoPinPlug twoPinPlug new PlugPinAdapter(threePlug);// 执行两脚插头实例方法(其实也是适配器中的方法)twoPinPlug.connectionTwoPin();}
}
结果 生活场景
耳机转换头现在有的手机是没有耳机插孔的但是充电的地方其实也可以充当耳机孔这时候就需要耳机转换的适配器转成手机支持的插孔。电压转换器生活中常见的充电器就是将220V电压转换成充电设备支持的电压。
应用场景
JDBC驱动程序不同的数据库提供商实现了不同的JDBC驱动接口使用适配器模式可以将这些不同的接口适配为标准的JDBC接口提高应用程序的可移植性处理器适配器HandlerAdapterSpringMVC工作流程中的出现的处理器适配器HandlerAdapter前端控制器DispatcherServlet会根据找到的处理器选择一个合适的HandlerAdapter。HandlerAdapter有多个实现用于适配不同类型的处理器。在这个过程中处理器适配器HandlerAdapter起到了桥梁的作用它连接了DispatcherServlet和具体的处理器Controller使得不同类型的处理器能够被统一调用和执行。