JAVA设计模式-适配器模式介绍
适配器模式是一种结构型模式,它主要解决接口之间的兼容问题。当我们需要使用某个类的接口时,但是这个类的接口目前并不符合我们使用需求,不能直接使用,那我们可以采取调整类和接口的方式,但是如果这个接口是第三方提供的,修改不了或者类和接口目前大量使用,并且使用稳定,不能轻易改动时,我们可以使用适配器模式,在不改动这个类的前提下来满足目前系统的需求。生活中也有例子,例如:生活中m2硬盘转SATA接口的转换卡、美版、港版与国行的电源适配器。
图例
角色
- 目标接口(Target):定义满足目前系统需求的接口,可以是抽象类或者接口。
- 适配者类(Adapter):与目前系统需求不兼容的类,需要被适配的类。
- 适配器类(Adapter):实现目标抽象类或者接口和适配者类之间的转换。
- 客户类(Client):调用目标接口。
优点
- 将目标类和适配者类解耦,不需要改变原有代码即可满足目前需求。
- 具有较高的灵活性和可扩展性。
代码示例-以m2硬盘转SATA接口为例InterfaceSata(Target)
/** * All rights Reserved, Designed By monkey.blog.xpyvip.top * * @version V1.0 * @Package com.xpyvip.designpattern.adapter * @Description: SATA接口 * @Author: xpy * @Date: Created in 2022年10月04日 7:52 下午 */public interface InterfaceSata { String installInterfaceSata();}
HardDiskM2(Adapter)
/** * All rights Reserved, Designed By monkey.blog.xpyvip.top * * @version V1.0 * @Package com.xpyvip.designpattern.adapter * @Description: m2硬盘 * @Author: xpy * @Date: Created in 2022年10月04日 7:50 下午 */public class HardDiskM2 { public String installInterfaceM2(){ System.out.println("m2硬盘安装接口是m2"); return "m2"; }}
InterfaceAdapter(Adapter)
/** * All rights Reserved, Designed By monkey.blog.xpyvip.top * * @version V1.0 * @Package com.xpyvip.designpattern.adapter * @Description: 适配器 * @Author: xpy * @Date: Created in 2022年10月04日 7:53 下午 */public class InterfaceAdapter implements InterfaceSata { private HardDiskM2 hardDiskM2; public InterfaceAdapter(HardDiskM2 hardDiskM2) { this.hardDiskM2 = hardDiskM2; } public String installInterfaceSata() { String m2 = hardDiskM2.installInterfaceM2(); // 进行m2接口转换sata接口逻辑 // ...... return "sata"; }}
Client
/** * All rights Reserved, Designed By monkey.blog.xpyvip.top * * @version V1.0 * @Package com.xpyvip.designpattern.adapter * @Description: 客户类 * @Author: xpy * @Date: Created in 2022年10月04日 8:28 下午 */public class Client { public static void main(String[] args) { InterfaceSata interfaceSata = new InterfaceAdapter(new HardDiskM2()); interfaceSata.installInterfaceSata(); }}
原文链接:https://monkey.blog.xpyvip.top/archives/java-she-ji-mo-shi—shi-pei-qi-mo-shi