美文网首页
逸笔记-设计模式-结构型模式-适配器模式

逸笔记-设计模式-结构型模式-适配器模式

作者: lovefy | 来源:发表于2023-09-26 16:09 被阅读0次

1.什么是适配器模式

适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。

1.类的适配器模式

什么是类的适配器,顾名思义,就是通过类的继承,接口的实现来达到我们期望的输出值,有一个A类,其拥有一个方法method1,待适配,目标接口是B,通过C类(继承A类,实现B接口),从而将A的功能(method1方法)扩展到C里 如下

    public class A {

        public void method1() {
            System.out.println("这里是A");
        }
    }

    public interface B {

        public void method1();

        public void method2();
    }

    public class C extends A implements B {

        @Override
        public void method2() {
            System.out.println("这里是C");
        }
    }
    @Test
    public void test8(){
        B b = new C();
        b.method1();
        b.method2();
    }
image (1).png

这样B接口的实现类就具有了A类的功能

2.对象的适配器模式

基本思路和类的适配器模式相同,只是将C类作修改,这次不继承A类,而是持有A类的实例,以达到解决兼容性的问题。如下

   public class A {

        public void method1() {
            System.out.println("这里是A");
        }
    }

    public interface B {

        public void method1();

        public void method2();
    }

    public class C implements B {

        private A a;

        public C(A a) {
            this.a = a;
        }

        @Override
        public void method1() {
            a.method1();
        }

        @Override
        public void method2() {
            System.out.println("这里是C");
        }
    }
    @Test
    public void test8(){
        B b = new C(new A());
        b.method1();
        b.method2();
    }
image (2).png

3.接口的适配器模式

有时我们写的一个接口中有多个抽象方法,当我们写该接口的实现类时,必须实现该接口的所有方法,这明显有时比较浪费,因为并不是所有的方法都是我们需要的,有时只需要某一些,此处为了解决这个问题,我们引入了接口的适配器模式,借助于一个抽象类,该抽象类实现了该接口,实现了所有的方法,而我们不和原始的接口打交道,只和该抽象类取得联系,所以我们写一个类,继承该抽象类,重写我们需要的方法就行。如下

   public abstract class A implements B{

        public void method1(){};

        public void method2(){};
    }

    public interface B {

        public void method1();

        public void method2();
    }

    public class C1 extends A {

        @Override
        public void method1() {
            System.out.println("C1 method1");
        }
    }

    public class C2 extends A {

        @Override
        public void method2() {
            System.out.println("C2 method2");
        }
    }
    @Test
    public void test8(){
        A a1 = new C1();
        A a2 = new C2();
        a1.method1();
        a1.method2();
        a2.method1();
        a2.method2();
    }
image (3).png

相关文章

  • JavaScript设计模式

    设计模式分类(23种设计模式) 创建型单例模式原型模式工厂模式抽象工厂模式建造者模式 结构型适配器模式装饰器模式代...

  • 最常用的设计模式---适配器模式(C++实现)

    适配器模式属于结构型的设计模式,它是结构型设计模式之首(用的最多的结构型设计模式)。 适配器设计模式也并不复杂,适...

  • iOS常用设计模式总结(一)

    设计模式大概分成三类: 1.创建型:单例设计模式、抽象工厂设计模式 2.结构型:MVC 模式、装饰器模式、适配器模...

  • 前篇

    一、常见的设计模式? 创建型:工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式 结构型:适配器模式、桥接...

  • 【设计模式】结构型设计模式汇总

    结构型设计模式汇总 结构型设计模式名称 结构型设计模式主要包括 7 大类: 代理模式 桥接模式 装饰器模式 适配器...

  • 设计模式纲要

    设计模式分3类: 创建型5种: 工厂方法模式,抽象工厂模式,单例模式,原型模式,建造者模式 结构型7种: 适配器模...

  • [Python-设计模式] 结构型模式- 适配器模式

    适配器模式 适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。 适配器模式结构 对象适配器 实...

  • 设计模式分类汇总

    结构型 适配器模式 组合模式 桥接模式 代理模式 装饰者模式 门面模式 享元模式 行为型 责任链模式 命令模式 解...

  • 23种设计模式

    创建型 工厂模式 ( 工厂方法模式, 抽象工厂模式, 建造者模式 ) 单例模式 原型模式 结构型 适配器模式 装饰...

  • 关于JavaScript设计模式的学习(JavaScript d

    上周写了关于创建型的设计模式,这次是关于结构型。接着上一篇来写了。 2.结构型 2.1适配器模式 2.2组合模式 ...

网友评论

      本文标题:逸笔记-设计模式-结构型模式-适配器模式

      本文链接:https://www.haomeiwen.com/subject/fyjhbdtx.html