JAVA设计模式笔记之适配器模式
适配器模式
用生活中的例子讲,适配器很像各种转换头,电源转换头啦、手机转换头啦
适配器模式分为两类
- 类适配器
- 对象适配器
举个栗子
现需要一辆可以在陆地上跑,也可以在水里开的两栖战车(目标接口)。
现有一辆仅可以在陆地上跑的战车(被适配者)。
现需造一个适配器,使得目标接口实现(适配器,一个具体的类)。
以下列子是类适配器
public interface Target {
//目标接口
public void canRun();
public void canSwim();
}
public class CarOnlyRun {
//现有的被适配者
public void canRun(){
System.out.println("我能在陆地上跑......");
}
}
public class Adapter extends CarOnlyRun implements Target{
//类适配器
@Override
public void canSwim() {
System.out.println("我能在水里上游......");
}
}
public class Main {
//实现
public static void main(String[] args) {
Target adapter = new Adapter();
adapter.canRun();
adapter.canSwim();
}
}
以下例子是对象适配器
public interface Target {
//目标接口
public void canRun();
public void canSwim();
}
public class CarOnlyRun {
//现有的被适配者
public void canRun(){
System.out.println("我能在陆地上跑......");
}
}
public class Adapter implements Target{
//适配器仅实现接口,将被适配者设置为一个属性,使用构造函数传递进来
private CarOnlyRun carOnlyRun;
public Adapter(CarOnlyRun carOnlyRun) {
super();
this.carOnlyRun = carOnlyRun;
}
@Override
public void canSwim() {
System.out.println("我能在水里上游......");
}
@Override
public void canRun() {
this.carOnlyRun.canRun();
}
}
public class Main {
//实现
public static void main(String[] args) {
Target adapter = new Adapter(new CarOnlyRun());
adapter.canRun();
adapter.canSwim();
}
}