首先假设一个场景,比如我们是卖手机的,如果顾客来了挑选手机,需要一个个拿不同型号的手机去演示功能
为了简便,我们可以制作一个接口,在接口一端连接手机,另一端控制演示手机的各个功能
手机都有发短信、打电话两个基本功能,我们可以将接口设置为这两个功能
- 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();
- }
- }
通过接口转换,我们也可以演示山寨机了