• 设计模式-适配器模式


    适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
    这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。
    我们通过下面的实例来演示适配器模式的使用。其中,音频播放器设备只能播放 mp3 文件,通过使用一个更高级的音频播放器来播放 vlc 和 mp4 文件。
    主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。
    JAVA应用:
    javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
    org.springframework.aop.framework.adapter.AdvisorAdapter
    org.springframework.web.servlet.HandlerAdapter

    第一种通过继承实现

    public interface Target {
        void request();
    }
    public class ConcreteTarget implements Target {
        @Override
        public void request() {
            System.out.println("concreteTarget目标方法");
        }
    
    }
    public class Adaptee {
        public void adapteeRequest(){
            System.out.println("被适配者的方法");
        }
    
    }
    public class Adapter extends Adaptee implements Target{
        @Override
        public void request() {
            //...
            super.adapteeRequest();
            //...
        }
    }
    public class Test {
        public static void main(String[] args) {
            Target target = new ConcreteTarget();
            target.request();
    
            Target adapterTarget = new Adapter();
            adapterTarget.request();
        }
    }

    第二种通过组合实现

    public interface Target {
        void request();
    }
    public class ConcreteTarget implements Target {
        @Override
        public void request() {
            System.out.println("concreteTarget目标方法");
        }
    
    }
    public class Adaptee {
        public void adapteeRequest(){
            System.out.println("被适配者的方法");
        }
    
    }
    public class Adapter implements Target{
        private Adaptee adaptee = new Adaptee();
    
        @Override
        public void request() {
            //...
            adaptee.adapteeRequest();
            //...
        }
    }
    public class Test {
        public static void main(String[] args) {
            Target target = new ConcreteTarget();
            target.request();
    
            Target adapterTarget = new Adapter();
            adapterTarget.request();
        }
    }
  • 相关阅读:
    leetcode------Single Number II
    leetcode------Same Tree
    Hadoop2.x版本全分布式详细安装过程!!【原创!非抄袭!】
    Hadoop2.X版本伪分布式安装详细介绍【非抄袭,原创!】
    leetcode------Linked List Cycle II
    [转载]c# winform 获取当前程序运行根目录
    [转载]MongoDB设置访问权限、设置用户
    [转载]C#设置开机启动
    datagridview 右键选中行 并弹出菜单
    [转载]async & await 的前世今生
  • 原文地址:https://www.cnblogs.com/woodpecker-z/p/14653639.html
Copyright © 2020-2023  润新知