我是这样想的,您学习设计模式,首先要明确两点,用在什么情况适合;用了此模式,对之后扩展的影响性如何。
适配器,我觉得,首先是这样,有一部分接口是您由于一些原因不能修改,或者不愿修改,另一部分接口是由您控制,然后,您需要把这两部分接口汇总起来,给出Adapter接口,比如您需要使用一些开源API,而开源组件又不能完全满足您需求,你还要加入部分自己的功能接口时。
用了之后的好处,我想到一点,假设一个新的电源出现了 PowerSourceC,那么您的修改是少量的可控的,而且不影响PowerSourceA,PowerSourceB的。

解决方案 »

  1.   

    你们老师提供的示例代码应该是有一点问题的,适配器模式是指针对某个特定类,使用组合的方式对其进行封装,让他实现某种特定接口,并在接口方法中做相应的调用,从而达到不重写特定类的时候,让我们的类能够被用到指定特殊接口类型的方法里但是在你的示例中,其实内部是包含了a,b两个电源的,因此这个类其实可以拆分成两个类class Adapter implements PowerSourceA
    {
        private PowerSourceA a;
        private PowerSourceB b;
         
        public Adapter(PowerSourceA a){
            this.a = a;
        }
        public void set(){
            a.insert();
        }
    }
    class Adapter implements PowerSourceA
    {
        private PowerSourceB b;
        public Adapter(PowerSourceB b){
            this.b = b;
        }
        public void insert(){
            b.set();
        }
    }你如果是针对B电源建立的A电源适配,那么当你直接调用A电源的方法时,会空指针错误,所以不如两者拆分,分开处理