zoukankan      html  css  js  c++  java
  • 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)缺省适配器
    缺省适配器模式是一种特殊的适配器模式,但这个适配器是由一个抽象类实现的,并且在抽象类中要实现目标接口中所规定的所有方法,但很多方法的实现都是空方法,而具体的子类都要继承此抽象类。


  • 相关阅读:
    慕课网 k8s环境搭建坑点
    这种yum源为阿里云
    linux yum安装jdk
    docker 常用命令
    docker部署
    docker windows安装 就是这么简单
    idea
    jrebel 破解失败 Unexpected response from server
    bladex flowable 表关系
    bladex 接口
  • 原文地址:https://www.cnblogs.com/itTeacher/p/2821766.html
Copyright © 2011-2022 走看看