旅游网站的建设方式,可以做360度全景图的网站,游戏app平台排行榜,罗湖做网站运营乐云seo文章目录 1.概念1.1 什么是适配器模式1.2 优点与缺点 2.实现方式2.1 类适配器模式2.2 对象适配器模式 3 Java 哪些地方用到了适配器模式4 Spring 哪些地方用到了适配器模式 1.概念
1.1 什么是适配器模式 简单来说#xff0c;适配器模式就是作为两个不兼容接口之间的桥梁。 1.… 文章目录 1.概念1.1 什么是适配器模式1.2 优点与缺点 2.实现方式2.1 类适配器模式2.2 对象适配器模式 3 Java 哪些地方用到了适配器模式4 Spring 哪些地方用到了适配器模式 1.概念
1.1 什么是适配器模式 简单来说适配器模式就是作为两个不兼容接口之间的桥梁。 1.2 优点与缺点
优点: 1.可以让原本接口不兼容的类可以合作无间。 2.增加了类的透明性和复用性现有的系统不改变的前提下引进新的接口。 3.灵活性好可以通过配置文件来更换适配器。 4.系统可以更易于扩展。 缺点: 1.适配器编写过程需要一定的技巧如果接口差异过大适配器编写会非常复杂。 2.增加系统的理解与设计难度由于适配器模式将一些简单的接口转换成复杂的接口增加阅读难度。
2.实现方式
2.1 类适配器模式 类适配器模式通过多重继承来实现它同时继承了目标接口和被适配者的类。这样适配器就可以在继承自被适配者的类的基础上实现目标接口。 // Lightning接口
public interface Lightning {void chargeLightning();
}// Lightning充电器
public class LightningCharger implements Lightning {Overridepublic void chargeLightning() {System.out.println(Charging via Lightning connector.);}
}// MicroUSB接口
public interface MicroUSB {void chargeMicroUSB();
}// 类适配器
public class MicroUSBClassAdapter extends LightningCharger implements MicroUSB {Overridepublic void chargeMicroUSB() {// 直接使用继承自LightningCharger的方法System.out.println(Class Adapter converts MicroUSB to Lightning.);this.chargeLightning();}
}// 使用类适配器模式
public class AdapterDemo {public static void main(String[] args) {MicroUSBClassAdapter microUSBClassAdapter new MicroUSBClassAdapter();microUSBClassAdapter.chargeMicroUSB();}
}2.2 对象适配器模式 对象适配器模式通过组合来实现它持有一个被适配者的实例并在适配器中实现目标接口。适配器将目标接口的调用转发给被适配者的相应方法。 // Lightning接口
public interface Lightning {void chargeLightning();
}// Lightning充电器
public class LightningCharger implements Lightning {Overridepublic void chargeLightning() {System.out.println(Charging via Lightning connector.);}
}// MicroUSB接口
public interface MicroUSB {void chargeMicroUSB();
}// 对象适配器
public class MicroUSBObjectAdapter implements MicroUSB {private Lightning lightning;public MicroUSBObjectAdapter(Lightning lightning) {this.lightning lightning;}Overridepublic void chargeMicroUSB() {// 适配器将MicroUSB充电请求转换为Lightning充电System.out.println(Object Adapter converts MicroUSB to Lightning.);lightning.chargeLightning();}
}// 使用对象适配器模式
public class AdapterDemo {public static void main(String[] args) {LightningCharger lightningCharger new LightningCharger();MicroUSBObjectAdapter microUSBObjectAdapter new MicroUSBObjectAdapter(lightningCharger);microUSBObjectAdapter.chargeMicroUSB();}
}对象适配器模式更加灵活因为它可以在运行时改变被适配者的实例而类适配器模式则在编译时就已经确定了被适配者的类。 3 Java 哪些地方用到了适配器模式 JDBCJava Database Connectivity: JDBC使用适配器模式来连接不同的数据库。DriverManager类充当适配器它根据URL选择合适的Driver实现并将JDBC调用转换为特定数据库的调用。 AWTAbstract Window Toolkit事件监听器: AWT使用适配器模式来处理事件。例如AWTEventMulticaster类充当适配器它将事件源的事件转发给事件监听器。 Java I/O: Java的I/O库中使用了适配器模式来适配不同的数据源和数据目的地。例如InputStreamReader和OutputStreamWriter类充当适配器它们将字节流转换为字符流。 Java Collections Framework: Java集合框架中使用了适配器模式来适配不同的集合类型。例如Collections.synchronizedCollection方法返回一个线程安全的集合视图它充当适配器将非线程安全的集合适配为线程安全的集合。 Java XML解析: Java中解析XML时可以使用适配器模式来适配不同的XML解析器。例如SAXParserFactory和DocumentBuilderFactory类充当适配器它们根据配置选择合适的解析器实现。 Java RMIRemote Method Invocation: Java RMI中使用了适配器模式来适配远程对象和本地对象。RMI系统提供的代理类充当适配器它将远程方法调用转换为本地方法调用。 第三方库和框架: 许多第三方库和框架也使用适配器模式来集成不同的技术或API。例如Spring框架中的AopProxy类充当适配器它将AOP面向切面编程的调用转换为目标对象的调用。 4 Spring 哪些地方用到了适配器模式 AOP面向切面编程: Spring AOP使用适配器模式来实现方法拦截。Spring的AopProxy类充当适配器它根据配置创建代理对象并在目标对象的方法调用前后执行增强代码。 事件发布: Spring的事件驱动模型使用适配器模式来解耦事件的生产者和消费者。ApplicationEventMulticaster类充当适配器它将事件发布给所有注册的监听器。 事务管理: Spring的事务管理器使用适配器模式来适配不同的事务API。例如PlatformTransactionManager接口及其各种实现如DataSourceTransactionManager和JtaTransactionManager充当适配器它们将Spring的事务抽象转换为具体的事务处理逻辑。 数据访问: Spring的数据访问模板如JdbcTemplate、HibernateTemplate等使用适配器模式来适配不同的数据访问技术。这些模板类充当适配器它们将Spring的数据访问抽象转换为具体的数据库操作。 Web集成: Spring的Web模块使用适配器模式来集成不同的Web框架。例如DispatcherServlet充当适配器它将HTTP请求转换为Spring MVC框架的调用。 资源访问: Spring的ResourceLoader和Resource接口使用适配器模式来抽象不同类型的资源访问。ResourceLoader的实现类充当适配器它们将资源访问的调用转换为具体文件系统、类路径或URL的访问。 消息服务: Spring的JMSJava消息服务集成使用适配器模式来适配不同的消息中间件。JmsTemplate和JmsListenerContainerFactory类充当适配器它们将Spring的消息抽象转换为具体的消息中间件操作。