• 适配器模式


    一. 结构图

    (1)类适配器结构图(继承新接口,实现目标接口)

    耦合度高,且要求了解组件的内部结构,应用较少。

     (2)对象适配器结构图(组合适配者对象,实现目标接口)

     二. 实现

    (1)类适配器
    package adapter;
    //目标接口
    interface Target
    {
        public void request();
    }
    //适配者接口
    class Adaptee
    {
        public void specificRequest()
        {       
            System.out.println("适配者中的业务代码被调用!");
        }
    }
    //类适配器类
    class ClassAdapter extends Adaptee implements Target
    {
        public void request()
        {
            specificRequest();
        }
    }
    //客户端代码
    public class ClassAdapterTest
    {
        public static void main(String[] args)
        {
            System.out.println("类适配器模式测试:");
            Target target = new ClassAdapter();
            target.request();
        }
    }
    (2)对象适配器
    package adapter;
    //对象适配器类
    class ObjectAdapter implements Target
    {
        private Adaptee adaptee;
        public ObjectAdapter(Adaptee adaptee)
        {
            this.adaptee=adaptee;
        }
        public void request()
        {
            adaptee.specificRequest();
        }
    }
    //客户端代码
    public class ObjectAdapterTest
    {
        public static void main(String[] args)
        {
            System.out.println("对象适配器模式测试:");
            Adaptee adaptee = new Adaptee();
            Target target = new ObjectAdapter(adaptee);
            target.request();
        }
    }

    三. 应用场景

    (1)老系统存在满足功能需求的类,但接口同新系统的要求不一致。
    (2)使用第三方组件,其接口定义和要求不同。

    四.与代理模式区别

    适配模式,解决适配者与目标接口不匹配的问题。
    代理模式,会和目标对象实现相同的接口,屏蔽对目标对象的直接访问。

  • 相关阅读:
    HTTP 协议中的并发限制及队首阻塞问题
    聊聊JMM
    聊聊CacheLine
    git解决本地建立git仓库 连接远程git仓库出现拒绝合并问题
    django 本地项目部署uwsgi 以及云服务器部署 uwsgi+Nginx+Docker+MySQL主从
    我的第一篇播客
    大爷的超市管理系统——冲刺第一天
    能混绝不C——凡事预则立
    2020软件工程团队作业——05
    2020软件工程作业——04
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/13200558.html
Copyright © 2020-2023  润新知