/**
* 适配器模式(Adapter):将一个类的接口转换成客户希望的另一个接口,adapter模式
* 使得原本由于接口不兼容,而不能一起工作的那些类可以一起工作.对修改关闭,对拓展开放.
* 不兼容的话 就加一个转接头.
*/
public class SixNine {
/**
* 可以看到work(powerB); 是报错的, powerA和powerB是同等级的对象
*
*/
public static void main(String[] args) {
/**
* 可以看到 powerA和 powerB 是不可以一起工作的,但是
* 在适配器Adapter的 转换头的作用下可以都在work 下工作.
*/
PowerA powerA = new PowerAImpl();
work(powerA);
PowerB powerB = new PowerBImpl();
Adapter bToAdapter = new Adapter(powerB);
work(bToAdapter);
}
public static void work(PowerA a) {
System.out.println("正在插入...");
a.insert();
System.out.println("插入结束...");
}
}
class Adapter implements PowerA{// 针对PowerA 的类型做一个接口.
private PowerB powerB; // 为了使PowerB 适用于上述接口.
public Adapter(){};
public Adapter(PowerB powerB) {
this.powerB = powerB;
}
@Override
public void insert() {
powerB.connect();
}
}
interface PowerB{
public void connect();
}
class PowerBImpl implements PowerB{
@Override
public void connect() {
System.out.println("电源B开始工作...");
}
}
interface PowerA {
public void insert();
}
class PowerAImpl implements PowerA{
@Override
public void insert() {
// TODO Auto-generated method stub
System.out.println("电源A开始工作...");
}
}