销售网站需要备案么,做网站在,品牌策划方案ppt,商场设计图片适配器模式#xff08;Adapter Pattern#xff09; 适配器模式适配器模式#xff08;Adapter Pattern#xff09;概述talk is cheap#xff0c; show you my code总结 适配器模式
适配器模式#xff08;Adapter Pattern#xff09;是面向对象软件设计中的一种结构型设计… 适配器模式Adapter Pattern 适配器模式适配器模式Adapter Pattern概述talk is cheap show you my code总结 适配器模式
适配器模式Adapter Pattern是面向对象软件设计中的一种结构型设计模式。它允许不兼容的接口协同工作通过创建一个适配器类来转换某个类的接口使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
ok概念还是太抽象了。来个例子就生动一点。
我们举个手机充电的例子我们充电头适配的是国内的电网。可是我们国家的电网工作电压与频率不一定与国外的一样如果我们需要去国外生活或者旅游怎么办呢 首先下面我们展示两种充电插头一种是国标的另一种是国外的。
我们会怎么办呢 一般来说我们会买一个充电转换头 这样的话我们的充电器就可以在国外正常使用了。其实这样一种实现就是适配器模式Adapter Pattern的体现。
适配器模式Adapter Pattern概述
适配器模式定义与目的
定义适配器模式是一种结构型设计模式它使接口不兼容的对象能够协作。适配器充当两个不兼容接口之间的桥梁。目的将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式的实现方式 在Java中我们主要通过组合或聚合的方式在适配器内部包含一个对适配者的引用。
代码案例
// 对象适配器
class ObjectAdapter implements Target {private Adaptee adaptee;// 构造函数注入适配者public ObjectAdapter(Adaptee adaptee) {this.adaptee adaptee;}Overridepublic void do() {adaptee.does();}
}talk is cheap show you my code
我们通过代码构造充电头那个案例。不过我们是让国外的充电实例充电头在中国能使用。
// 国外充电接口
interface ForeignCharge {void charge(double time);
}// 国内充电接口
interface ChinaCharge {void chongDian(double time);
}// 国外充电接口的实现
class ForeignChargeImpl implements ForeignCharge {Overridepublic void charge(double time) {System.out.println(charging time hours);}
}// 适配器类
class ChargeAdapter implements ChinaCharge {private final ForeignCharge foreignCharge;public ChargeAdapter(ForeignCharge foreignCharge) {this.foreignCharge foreignCharge;}Overridepublic void chongDian(double time) {// 调用国外充电方法foreignCharge.charge(time);}
}// 客户端代码
public class Test1 {public static void main(String[] args) {// 创建国外充电实例ForeignCharge foreignCharge new ForeignChargeImpl();// 创建适配器实例ChargeAdapter adapter new ChargeAdapter(foreignCharge);// 使用适配器调用国外充电实例adapter.chongDian(1.00);}
}代码详解
ForeignCharge 接口
作用定义了一个国外使用的充电接口。方法charge(double time) - 表示充电的时间。
ChinaCharge 接口
作用定义了一个国内使用的充电接口。方法chongDian(double time) - 表示充电的时间。
ForeignChargeImpl 类实现ForeignCharge 接口方法
ChargeAdapter 类
作用适配器类实现了 ChinaCharge 接口并持有一个 ForeignCharge 对象。构造方法ChargeAdapter(ForeignCharge foreignCharge)接受一个 ForeignCharge 对象并存储在 foreignCharge 成员变量中。方法chongDian(double time)调用 foreignCharge 的 charge 方法来完成充电操作。
客户端类步骤详解
创建一个 ForeignChargeImpl 实例表示国外的充电设备。创建一个 ChargeAdapter 实例并将 ForeignChargeImpl 实例传递给适配器。通过适配器调用 chongDian 方法实际执行的是 ForeignChargeImpl 的 charge 方法。
总结
适配器模式的过程中一般涉及三个角色 Target 目标Adaptee 被适配者Adapter 适配者 适配器模式的优点
提高代码复用性增加灵活性因为我们可以灵活选择要适配的对象降低耦合 适配者变化的时候我们只需要修改适配器代码客户端可以正常使用
适配器模式应用场景
遗留系统集成当你有一个新的系统需要与旧系统中的某些类交互时可以使用适配器模式来解决接口不匹配的问题。第三方库集成当你想使用第三方库中的类但这些类的接口不符合你的需求时适配器模式可以帮助你进行转换。API 升级在升级 API 或更换框架时适配器模式可以帮助平滑过渡确保现有代码继续正常工作。
适配器模式是一种非常实用的设计模式特别是在需要整合现有代码或第三方库时。理解如何正确使用适配器模式可以帮助开发者更有效地组织代码并优化程序设计。