概述
适配器模式 : 将一个类的接口转换为客户希望的另一个接口. 适配器模式让那些接口不兼容的的类可以在一起工作. Adapter模式也称为Wrapper模式( Adapter Pattern : Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces )
/** * 功能描述:充当Adapterns角色 * * @author lihao * @create 2019-11-01 21:25 */ public class Banner { private String string; public Banner(String string) { this.string = string; } public void showWithParen() { System.out.println("{" +string +"}"); } public void showWithAster() { System.out.println("*" + string + "*"); } }
Print接口 : 充当Target角色
/**
* 功能描述:充当Target角色
*
* @author lihao
* @create 2019-11-01 21:27
*/
public interface Print {
public abstract void printWeak();
public abstract void printString();
}PrintBanner类 : 充当Adapter角色
/**
* 功能描述:充当Adapter角色
*
* @author lihao
* @create 2019-11-01 21:30
*/
public class PrintBanner extends Banner implements Print{
public PrintBanner(String string) {
super(string);
}
@Override
public void printWeak() {
showWithParen();
}
@Override
public void printString() {
showWithAster();
}
}Main类 : 充当Client角色
/**
* 功能描述:充当Client角色
*
* @author lihao
* @create 2019-11-01 21:31
*/
public class Main {
public static void main(String[] args) {
Print p = new PrintBanner("Hello");
p.printWeak();
p.printString();
}
}程序运行结果:
{Hello}
*Hello*示例UML图
Adapter模式中登场的角色
- Target(目标抽象类) : 目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类. 在类适配器中,由于Java语言不支持多重继承,所以它只能是接口
- Client(请求者):该角色负责使用 Target 角色所定义的方法进行具体的处理
- Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对 Adaptee 和 Target 进行适配。适配器Adapter 是适配器模式的核心,在类适配器中,它通过实现Target接口并继承Adaptee来使两者产生联系,在对象适配器中,它通过继承Target并关联一个Adapter对象来使两者产生联系
- Adaptee(适配者类):适配者既被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,其包含着客户希望使用的业务方法。

京公网安备 11010502036488号