适配器模式:将一个接口转换为客户希望的另外一个接口。可以使接口不兼容的类在一起工作,达到复用的目的。
当系统的数据和行为都正确,但接口不符合的时候,我们可以复用一些现存的类。
我认为适配器可以做到类似的业务在调用不同的实现时达到接口的一致性,这样也减少代码的冗余,但是在不同的业务则尽量分开不要把不同的业务用相同的接口做。
来自大话设计模式的一张UML图
下面看代码吧!
public abstract class Cla {
public abstract void Int1();
}
public class Cla1 extends Cla {
@Override
public void Int1() {
System.out.println("111");
}
}
public class Cla2 {
public void Int2() {
System.out.println("222");
}
}
public class Adapter extends Cla {
public Cla2 cla2 = new Cla2();
@Override
public void Int1() {
cla2.Int2();
}
}
public class Test {
public static void main(String[] args) {
/*我们所用的某个方法都是通过调Cla1的Int1方法去实现的
可是现在有个类似的需求但是通过调Cla1的Int1方法不能满足
需要Cla2里面的Int2才能满足,但是不想变更接口的调用方式
因此我们通过适配器达到通过调用Cla的Int1方法来调用
Cla2里面的Int2。
* */
Cla cl = new Cla1();
cl.Int1();
Cla cla = new Adapter();
cla.Int1();
}
}