模拟电源适配器:电源A在工作,在不改变电源A(两孔)的基础上加上电源B(三孔),通过中间添加一个适配器来实现
软件开发中:如果对软件进行维护需要添加新功能,前提是不能改变原有代码,可以通过Adapter来实现添加功能
采用适配器模式目的:让两个不相干的功能实现兼容
用法一:
1:单项适配,将B转换成A
interface PowerA{ void insert(); } class PowerAImpl implements PowerA{ @Override public void insert() { System.out.println("电源A已工作"); } } interface PowerB{ void insert(); } class PowerBImpl implements PowerB{ @Override public void insert() { System.out.println("电源B已工作"); } } class Adapter implements PowerA{ @Override public void insert() { PowerB power=new PowerBImpl(); power.insert(); } } public class Test { private void start(PowerA power){ power.insert(); } @org.junit.Test public void adpterTest(){ PowerA power=new PowerAImpl(); start(power); Adapter adapter=new Adapter(); start(adapter); } }
2:双向适配,A和B都能用
class Adapter implements PowerA,PowerB{ private PowerA a; private PowerB b; public Adapter(PowerA a){ this.a=a; } public Adapter(PowerB b){ this.b=b; } @Override public void insert() { b.connect(); } @Override public void connect() { a.insert(); } }
用法二:接口适配器
接口中有很多方法有时候不需要全部实现,可以采用接口适配器方式,用到哪个方法就重写哪个方法
interface Funs{ void fun1(); void fun2(); void fun3(); } class FunsAdapter implements Funs{ @Override public void fun1() { // TODO Auto-generated method stub } @Override public void fun2() { // TODO Auto-generated method stub } @Override public void fun3() { // TODO Auto-generated method stub } } /** * 用到哪个方法就重写哪个方法 * */ class userFuns extends FunsAdapter{ public void fun1(){ } }