概述
Adapter 模式也被称为 Wrapper 模式
Adapter 模式有以下2种
- 类适配器模式(使用继承的适配器)
- 对象适配器模式(使用委托的适配器)
一般大家举例都喜欢用 220v 家用电压 和 12v 电器电压适配举例, 这里不做太多的场景引入, 只做代码演示
使用场景
- 已有功能的复用
- 版本升级及兼容性
- 功能完全不同的类
使用继承的适配器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
public class HomeVoltage {
public void provider220V() { System.out.println("家用电压220v"); } }
public interface PhoneVoltage {
public void need5V();
}
public class Adapter extends HomeVoltage implements PhoneVoltage {
@Override public void need5V() { provider220V(); System.out.println("电压适配"); System.out.println("输出5v电压"); } }
public class AdapterDemo {
public static void main(String[] args) { Adapter adapter = new Adapter(); adapter.need5V(); } }
|
使用委托的适配器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
public class HomeVoltage {
public void provider220V() { System.out.println("家用电压220v"); } }
public interface PhoneVoltage {
public void need5V();
}
public class Wrapper implements PhoneVoltage {
private HomeVoltage homeVoltage;
public Wrapper(HomeVoltage homeVoltage) { this.homeVoltage = homeVoltage; }
@Override public void need5V() { homeVoltage.provider220V(); System.out.println("电压适配"); System.out.println("输出5v电压"); } }
public class WrapperDemo {
public static void main(String[] args) { Wrapper wrapper = new Wrapper(new HomeVoltage()); wrapper.need5V(); } }
|
最后
本文到此结束,感谢阅读。如果您觉得不错,请关注公众号【当我遇上你】,您的支持是我写作的最大动力。