欢迎大家来到IT世界,在知识的湖畔探索吧!
适配器模式定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。其别名为包装器。
适配器模式角色构成:
- 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口,定义了客户端使用的特定接口。
- 适配者(Adaptee)类:被访问和适配的现存组件库中的组件接口或类,是需要被适配的类或接口。
- 适配器(Adapter)类:一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。
适配器模式主要分为两类类:类适配器模式(继承)、对象适配器模式(依赖)
适配器模式适用场景:
- 系统扩展与升级:当系统需要扩展或升级时,可能会引入新的类和接口,而原有的客户端可能无法直接使用这些新的类和接口。通过适配器模式,可以将新的接口转换成客户端所期望的接口。
- 第三方组件集成:使用第三方提供的组件,但组件接口定义和自己要求的接口定义不同,可通过适配器模式将第三方组件的接口转换为符合自身系统要求的接口57。
- 统一接口设计:某个功能的实现依赖多个外部系统或类,通过适配器模式,将它们的接口适配为统一的接口定义,然后可以使用多态的特性来复用代码逻辑6。
- 适配不同数据格式:可用于不同格式的数据之间的适配。比如,把从不同征信系统拉取的不同格式的征信数据,统一为相同的格式,以方便存储和使用6。
适配器模式-优缺点:
- 优点:客户端通过适配器可以透明地调用目标接口;复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类;将目标类和适配者类解耦,解决了接口不一致的问题;在很多业务场景中符合开闭原则。
- 缺点:适配器编写过程需要结合业务场景全面考虑,可能会增加系统的复杂性;增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。
适配器模式-Java代码样例
类适配器
//目标(Target)接口 interface Target { void request(); }
欢迎大家来到IT世界,在知识的湖畔探索吧!
欢迎大家来到IT世界,在知识的湖畔探索吧!//适配者(Adaptee)类 class Adaptee { public void specificRequest() { System.out.println("适配者的特定请求"); } }
// 适配器(Adapter)类 class Adapter extends Adaptee implements Target { @Override public void request() { specificRequest(); } }
欢迎大家来到IT世界,在知识的湖畔探索吧!// 客户端调用 public class Client { public static void main(String[] args) { Target target = new Adapter(); target.request(); } }
对象适配器
// 目标接口 interface Target { void request(); }
欢迎大家来到IT世界,在知识的湖畔探索吧!// 适配者类 class Adaptee { public void specificRequest() { System.out.println("适配者的特定请求"); } }
// 适配器类 class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { adaptee.specificRequest(); } }
欢迎大家来到IT世界,在知识的湖畔探索吧!// 客户端 public class Client { public static void main(String[] args) { Adaptee adaptee = new Adaptee(); Target target = new Adapter(adaptee); target.request(); } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/112161.html