• java 实现适配器模式


    适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成另一个类的接口,使得原本不兼容的类可以协同工作。适配器模式包括两种类型:类适配器和对象适配器。下面分别介绍这两种类型的实现方式。

    类适配器模式

    类适配器模式使用继承来实现适配器。在这种模式下,适配器类继承了需要适配的类,并实现了目标接口。以下是一个示例:

    首先,定义目标接口 Target

    public interface Target {
        void request();
    }
    
    • 1
    • 2
    • 3

    然后,定义需要适配的类 Adaptee

    public class Adaptee {
        public void specificRequest() {
            System.out.println("Adaptee's specific request");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    接下来,创建一个适配器类 ClassAdapter,它继承了 Adaptee 类并实现了 Target 接口:

    public class ClassAdapter extends Adaptee implements Target {
        @Override
        public void request() {
            specificRequest(); // 调用Adaptee的方法
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    现在,我们可以使用 ClassAdapter 类来将 Adaptee 类的接口转换成 Target 接口:

    public class AdapterPatternDemo {
        public static void main(String[] args) {
            Target target = new ClassAdapter();
            target.request(); // 调用Target接口的方法
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对象适配器模式

    对象适配器模式使用组合来实现适配器。在这种模式下,适配器类持有一个需要适配的对象,并实现了目标接口。以下是一个示例:

    首先,定义目标接口 Target(与类适配器中相同):

    public interface Target {
        void request();
    }
    
    • 1
    • 2
    • 3

    然后,定义需要适配的类 Adaptee(与类适配器中相同):

    public class Adaptee {
        public void specificRequest() {
            System.out.println("Adaptee's specific request");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    接下来,创建一个适配器类 ObjectAdapter,它持有一个 Adaptee 对象并实现了 Target 接口:

    public class ObjectAdapter implements Target {
        private Adaptee adaptee;
    
        public ObjectAdapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }
    
        @Override
        public void request() {
            adaptee.specificRequest(); // 调用Adaptee的方法
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    现在,我们可以使用 ObjectAdapter 类来将 Adaptee 类的接口转换成 Target 接口:

    public class AdapterPatternDemo {
        public static void main(String[] args) {
            Adaptee adaptee = new Adaptee();
            Target target = new ObjectAdapter(adaptee);
            target.request(); // 调用Target接口的方法
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    无论是类适配器还是对象适配器,适配器模式都允许我们在不修改现有类的情况下实现接口的适配,以满足系统的需求。选择哪种模式取决于项目需求和设计偏好。

  • 相关阅读:
    [教你做小游戏] 只用几行原生JS,写一个函数,播放音效、播放BGM、切换BGM
    项目管理逻辑:项目经理如何掌控项目生命周期, 才能避免身心俱疲?
    Android大厂需要刷的(999道)面试题
    TCP/IP 网络嗅探器开发实例
    软件测试怎么去介绍一个项目的测试流程?
    UE4 UltrDynamicSky与场景物体进行交互
    mysql数据库实验
    java中面向对象三大特性有哪些?
    JAVA项目中遇到URLEncoder URLDecoder编码解码问题
    优秀论文以及思路分析02
  • 原文地址:https://blog.csdn.net/sunyuhua_keyboard/article/details/132672511