模拟电源适配器:电源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(){
}
}