Java设计模式之适配器模式(举例+代码说明)

(本小文只供个人学习记录,如对您有帮助则实属有幸,如有错误也请各位积极指出,万分感谢!)

适配器模式,简单一句总结就是:在不修改原有代码的基础上,将两个完全不相关的类建立某种联系,使之可以相互调用完成协作,

适配器模式有两种实现方案,1)类适配器模式;2)对象适配器模式

给出场景:一个三头插头怎么插在一个两孔插座上?答案是加一个接头适配器,将三头插头转为两头插头插入插座。

直接上代码解释:

先定义一个三头插头:

public interface ThreePower {

             void  getThreePower();

}

再定义一个两孔插座实现类:

public class TwoPower {

            public void getTwoPower(){

                  System.out.println("*********我提供了两孔插座的电力");

            }

}

此时可以引出本次文章的核心问题:如何让三头插头接口的实现类中调用两孔插座实现类里的方法呢?

第一种:类适配器模式

public class ThreeToTwoAdapter extends TwoPower implements ThreePower {

            @Override

             public void getThreePower(){

                     System.out.println("*********我是类适配器模式的适配器类");

                      //this关键字,调用父类中的方法

                      this.getTwoPower();

             }

}

测试:public class MainTest{

                public static void main(String[] args){

                       ThreePower threePower = new ThreeToTwoAdapter();

                       threePower.getThreePower(); //打印两句话: *********我是类适配器模式的适配器类

                                                                                                *********我提供了两孔插座的电力

 

                }

}

 

第二种:对象适配器模式

public class ThreeToTwoAdapterObejct implements ThreePower{

               private TwoPower twoPower = new TwoPower();

               public ThreeToTwoAdapterObejct(TwoPower twoPower){

                           this.twoPower = twoPower;

                }

 

            @Override

             public void getThreePower(){

                     System.out.println("*********我是对象适配器模式的适配器类");

                      //当前类成员变量代理调用对象方法

                      twoPower.getTwoPower();

             }

}

 

测试:public class MainTest{

                public static void main(String[] args){

                       TwoPower twoPower = new TwoPower();

                       ThreePower threePower = new ThreeToTwoAdapterObejct (twoPower);

                       threePower.getThreePower(); //打印两句话: *********我是对象适配器模式的适配器类

                                                                                                *********我提供了两孔插座的电力

 

                }

}

 

注:在SpringMVC中,浏览器请求发送到服务器后,SpringMVC是通过对象适配器完成找到具体的Controller的类型的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值