• Java设计模式二十:适配器模式(Adapter)


    将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。

    适用情况:
    使用的前提是:接口中规定了所有要实现的方法; 但一个要实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。

    实现方法:
    用一个抽象类实现已有的接口,并实现接口中所规定的所有方法,这些方法的实现可以都是空方法;
    原本要实现接口的子类,只实现上面的抽象类即可,并在其内部实现时,只对其感兴趣的方法进行实现;

    类图:


    角色:
    目标接口(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
    需要适配的类(Adaptee): 需要适配的类或适配者类。
    适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。

    实例:
    public interface Target
    {
        public void request();
    }

    public class Adaptee
    {
        public void specialRequest()
        {
            System.out.println("this is special request");
        }
    }

    public class Adapter implements Target
    {
        Adaptee adaptee = new Adaptee();

        @Override
        public void request()
        {
            adaptee.specialRequest();
        }
    }

    public class Client
    {
        public static void main(final String[] args)
        {
            final Target adapter = new Adapter();
            adapter.request();
        }
    }

    主要内容:
    1) 类适配器
    当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配。

    2)对象适配器
    对象适配器通过组合除了满足"用户期待的接口"还降低了代码间的不良耦合。

    3)缺省适配器
    缺省适配器模式是一种特殊的适配器模式,但这个适配器是由一个抽象类实现的,并且在抽象类中要实现目标接口中所规定的所有方法,但很多方法的实现都是空方法,而具体的子类都要继承此抽象类。


  • 相关阅读:
    《挑战程序设计竞赛》 一二章部分代码题解
    动态规划之矩阵连乘和POJ 1651
    关于图片的重绘,从而进行压缩
    iOS开发:读取pdf文件
    如何改变tableview的section的颜色
    端口的作用
    Mac 下,配置SVN
    cocoaPods 的安装和使用
    关于如何调用苹果自带的地图APP
    关于 HTTP 请求头的内容
  • 原文地址:https://www.cnblogs.com/itTeacher/p/2821766.html
Copyright © 2020-2023  润新知