什么网站程序做资料库,h5开发是做什么,企业网站建设浩森宇特,宣讲家网站生态文明建设适配器模式
设么是适配器模式
它属于结构型模式#xff0c;主要用于将一个类的接口转换成客户端所期望的另一种接口#xff0c;从而使得原本由于接口不兼容而无法协同工作的类能够一起工作。
适配器模式主要解决的是不兼容接口的问题。在软件开发中#xff0c;经常会有这…适配器模式
设么是适配器模式
它属于结构型模式主要用于将一个类的接口转换成客户端所期望的另一种接口从而使得原本由于接口不兼容而无法协同工作的类能够一起工作。
适配器模式主要解决的是不兼容接口的问题。在软件开发中经常会有这样的情况我们有一个现有的类它的接口方法、属性等不符合我们的需求但我们又无法直接修改这个类可能是因为它是第三方库的一部分或者出于其他原因。此时我们可以使用适配器模式来“包装”这个类使其具有我们期望的接口。
适配器模式的主要形式
类适配器模式通过多重继承的方式适配器类继承自目标接口和适配者类。由于Java不支持多重继承除了接口因此在实际应用中我们通常会使用对象组合的方式来实现类适配器模式的效果。对象适配器模式适配器类持有适配者类的一个实例并实现了目标接口。当客户端调用目标接口的方法时适配器类会调用适配者类的相应方法。 适配器模式的优点包括
适配器模式特点
提高了类的复用性通过适配器我们可以复用那些原本不兼容的类。增加了灵活性适配器模式使得代码更加灵活我们可以很容易地更换适配者类而不需要修改客户端代码。遵循了“开闭原则”适配器模式对修改关闭对扩展开放。我们可以通过添加新的适配器类来支持新的适配者类而不需要修改现有的代码。 然而适配器模式也有其局限性。例如如果适配者类的接口与目标接口的差别太大那么适配器类的实现可能会变得非常复杂和难以维护。此外如果过度使用适配器模式可能会导致系统结构变得复杂和混乱。 类适配器
UML Adaptee适配者键盘具有打印功能但是由于是接口并不适用。Target目标接口目标接口需要通过USB插入Adapter适配器实现目标接口重新输出方法通过继承调用适配者输出方法测试时通过创建适配者Adapter调用目标接口方法即可实现调用Adaptee适配者相应方法
实现代码
Adaptee.java
// 这是需要被适配的类它可能有一个不兼容的接口。
// 比如不兼容USB接口的旧键盘
public class Adaptee {public void print(){System.out.println(键盘输出);}
}Target.java
// 这是我们期望得到的接口。客户端针对这个接口编程而不需要知道具体的实现细节
// 笔记本USB接口
public interface Target {void handlePrint();
}Adapter.java
// 类适配器
// 适配器这是适配器模式的核心。适配器类实现了目标接口并在内部持有适配者类的一个实例。
// 当客户端调用目标接口的方法时适配器类会将调用委托给适配者类的相应方法可能需要经过一些转换。
public class Adapter extends Adaptee implements Target{Overridepublic void handlePrint() {super.print();}
}TestClient.java
public class TestClient {public static void main(String[] args) {// 创建适配器Adapter adapter new Adapter();// 测试adapter.handlePrint();}
}执行结果 对象适配器模式
UML 该模式只需要修改Adapter(适配器)将继承改为对象组合。将Adapter属性设置为Adaptee,通过Adaptee调用其方法 Adapter.java
// 对象适配器模式
// 适配器这是适配器模式的核心。适配器类实现了目标接口并在内部持有适配者类的一个实例。
//当客户端调用目标接口的方法时适配器类会将调用委托给适配者类的相应方法可能需要经过一些转换。
public class Adapter implements Target {private Adaptee adaptee;Overridepublic void handlePrint() {adaptee.print();}
}执行结果
gitee源码 git clone https://gitee.com/dchh/JavaStudyWorkSpaces.git