适配器模式


    适配器模式是将一个类的接口转换成客户端所期望的另一种接口,从而使原本因接口不匹配而无法一起工作的两个类能够一起工作。适配类可以根据所传递的参数返回一个合适的实例给客户端。

对象适配器模式

/*Target角色*/
public interface FiveVolt{
    public int getVolt5();
}

/*Adapter角色,需要被转换的对象*/
public class Volt220{
    public int getVolt220(){
        return 220;
    }
}
//对象适配器模式
public class VoltAdapter implements FiveVolt{
    Volt220 mVolt220;
    public VoltAdapter(Volt220 adaptee){
        mVolt220 = adaptee;
    }
    public int getVolt220(){
        return mVolt220.getVolt220();
    } 
    @Override
    public int getVolt5(){
        return 5;
    }
}
public class Test{
    public static void main(String []args){
        VoltAdapter adapter = new VoltAdapter(new Volt2209());
        System.out.println("输出电压:" + adapter.getVolt5());
    }
}
    这种实现方式直接将要被适配的对象传递到Adapter中,使用组合的形式实现接口兼容的效果。这比类适配器更为灵活,而且被适配对象中的方法不会暴露出来,而类适配器由于继承了被适配对象,因此,被适配对象类的函数在Adapter类中也都含有,这使得Adapter类出现一些奇怪的接口,用户使用成本较高,因此,对象适配器模式更为灵活、适用。

使用场景

  • 系统需要使用实现现有的类,而此类的接口不符合系统的需要,即接口不兼容。
  • 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
  • 需要一个统一的输出接口,而输入端的类型不可预知。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容