首先假设一个场景,比如我们是卖手机的,如果顾客来了挑选手机,需要一个个拿不同型号的手机去演示功能
为了简便,我们可以制作一个接口,在接口一端连接手机,另一端控制演示手机的各个功能
手机都有发短信、打电话两个基本功能,我们可以将接口设置为这两个功能
public interface Cellphone
{
public void phone(long num);
public void sms(long num, String content);
}
下面的一般手机都可以使用这个接口
public class Nokia implements Cellphone
{
@Override
public void phone(long number)
{
Util.print("nokia phone");
}
@Override
public void sms(long number, String content)
{
Util.print("nokia sms");
}
}
public class BlackBerry implements Cellphone
{
@Override
public void phone(long number)
{
Util.print("BlackBerry phone");
}
@Override
public void sms(long number, String content)
{
Util.print("BlackBerry sms");
}
}
Iphone上还可以玩玩游戏
public class Iphone implements Cellphone
{
@Override
public void phone(long num)
{
Util.print("Iphone phone");
}
@Override
public void sms(long num, String content)
{
Util.print("Iphone sms");
}
public void play()
{
Util.print("Iphone play");
}
}
那么,我们在操作的时候就可以通过接口来演示手机功能
Cellphone cell = new Nokia();
cell.phone(250);
这时,顾客还希望我们演示一下山寨机,可是接口不匹配,怎么办,我们需要制作一个适配器来转换一下
public class Shanzhaiji
{
public void dadianhua()
{
Util.print("shanzhaiji dadianhua jiushiniu");
}
public void faduanxin()
{
Util.print("shanzhaiji faduanxin jiushiniu");
}
}
public class ShanzhaiAdapter implements Cellphone
{
private Shanzhaiji shanzhai;
public ShanzhaiAdapter(Shanzhaiji shanzhai)
{
this.shanzhai = shanzhai;
}
@Override
public void phone(long num)
{
shanzhai.dadianhua();
}
@Override
public void sms(long num, String content)
{
shanzhai.faduanxin();
}
}
通过接口转换,我们也可以演示山寨机了
ShanzhaiAdapter adapter = new ShanzhaiAdapter(new Shanzhaiji());
adapter.phone(0);