首页 > 其他分享 >适配器设计模式

适配器设计模式

时间:2024-09-11 22:04:37浏览次数:10  
标签:适配器 abstract public Override 设计模式 void

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解解、保证代码可靠性、程序的重用性。

简单理解:设计模式就是各种套路。

适配器设计模式:解决接口与接口实现类之间的矛盾问题

如果一个接口有很多个方法,但是某一个实现只需要使用到其中的某一个方法,那么根据接口的语法,这个实现必须重写这个接口的所有方法。这将导致代码维护和阅读很麻烦。于是就有了适配器这个设计模式。

适配器是一个类,实现这个接口,重写全部方法,但是所有方法都是空实现,即全部重写了,但是全部都是空着的,没有方法体。

再定义实现的时候,就不要去实现这个接口了,而是继承这个适配器,然后在类中,要用到哪个方法就重写那一个方法就可以了。

适配器的所有方法都是空实现,因此建立适配器的对象是没有任何意义的,因此将适配器定义为抽象的,即用 abstract 来修饰,目的就是不让外界来创建它的对象。

接口:

package demo6;

public interface Inter {
    public abstract void method1();

    public abstract void method2();

    public abstract void method3();

    public abstract void method4();

    public abstract void method5();

    public abstract void method6();

    public abstract void method7();

    public abstract void method8();

    public abstract void method9();

    public abstract void method10();
}

适配器:

package demo6;

public abstract class InterAdapter implements Inter {  // 定义为抽象类, 不让外界实例化这个类
    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }

    @Override
    public void method4() {

    }

    @Override
    public void method5() {

    }

    @Override
    public void method6() {

    }

    @Override
    public void method7() {

    }

    @Override
    public void method8() {

    }

    @Override
    public void method9() {

    }

    @Override
    public void method10() {

    }
}

类:

package demo6;

public class InterImpl extends InterAdapter {
    @Override
    public void method5() {
        System.out.println("重写method5。");
    }
}

总结:

  1. 当一个接口中抽象方法过多,但是我只要使用其中一部分的时候,就可以适配器设计模式。

  2. 书写步骤:

    1. 编写中间类 XXXAdapter,实现对应的接口。

    2. 对接口中的抽象方法进行空实现。

    3. 让真正的实现类继承中间类,并重写需要用的方法。

    4. 为了避免其他类创建适配器类的对象,中间的适配器类用 abstract 进行修饰。

  3. 如果继承中间类的类还有别的父类, 而 Java 不允许多继承, 怎么办呢? 可以让这个中间类, 即适配器去继承这个父类.

标签:适配器,abstract,public,Override,设计模式,void
From: https://www.cnblogs.com/Chengkai730/p/18409075

相关文章

  • C#设计模式
    C#设计模式入门实战教程 什么是设计模式设计模式是对面向对象设计中反复出现的问题的解决方案。它们提供了被反复使用、多数人知晓的、经过分类编目的代码设计经验总结。设计模式的作用提高代码的可重用性:通过定义一套标准的解决方案,设计模式使得相同或类似的问题可以在......
  • C++模拟实现stack和queue(容器适配器)
    适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。简单理解,将模板参数给成容器,就是容器适配器,写成参数的容器的各种接口,均满足需要。#include<list>#includ......
  • Java中的缓存穿透与雪崩问题:解决方案与设计模式
    Java中的缓存穿透与雪崩问题:解决方案与设计模式大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在分布式系统中,缓存是提高性能的重要手段。然而,缓存系统在实际应用中常常会遇到缓存穿透和缓存雪崩这两种问题。本文将探讨这两种问题的成因以及在Java中......
  • 结构者设计模式
    结构者模式(StructuralDesignPatterns)指的是一组设计模式,旨在帮助设计者将对象或类组合成更大的结构,以便于形成更复杂的系统。这些模式关注如何将对象或类组织起来,以构建更大的结构或系统。主要目的是提高系统的灵活性和可维护性。常见的结构者模式包括:适配器模式(AdapterPa......
  • 设计模式-映射器(Mapper)
    概念在两个独立的对象之间建立通信的对象背景有时,需要在两个子系统之间通信,同时还必须隔离它们,而且还不想建立子系统间的依赖关系。运行机制映射器是子系统之间的绝缘层,控制着子系统间的通信细节;映射器通常需要在层与层之间进行数据交互。可以由使用映射器的第三方系统激......
  • 设计模式-入口(Gateway)
    入口是一个封装外部系统或资源访问的对象背景即使是纯粹的面向对象系统,通常也要处理一些不是对象的事务,例如关系数据库、CICS事务和XML数据结构。问题一般通过API访问外部资源。对API的理解是开发过程的必经之路,不仅软件的可读性差,使软件修改变也变得困难。解决途径......
  • 【LabVIEW学习篇 - 24】:生产者/消费者设计模式
    文章目录生产者/消费者设计模式案例:控制LED等亮灭生产者/消费者设计模式生产者/消费者是多线程编程中最基本的一种模式,使用非常普遍。从软件角度看,生产者就是数据的提供方,而消费者就是数据的消费处理方,二者之间存在一个数据缓存区。在新建中可创建生产者/消费者......
  • 【设计模式】装饰模式
    1.不好的代码(冗杂)//业务操作classStream{public:virtualcharRead(intnumber)=0;virtualvoidSeek(intposition)=0;virtualvoidWrite(chardata)=0;virtual~Stream(){}};//主体类classFileStream:publicStream{public:vir......
  • Java 设计模式-状态模式
    目录一.概述二.主要角色三.代码示例四.优缺点优点:缺点:五.常见应用场景一.概述        状态模式是一种行为设计模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来好像修改了它的类。状态模式把所有的与一个特定的状态相关的行为放到一个类......
  • Java 设计模式-代理模式
    目录概述一.什么是代理模式1.举例说明二.代理模式作用1.保护代理2.增强功能3.代理交互4.远程代理:三.代理模式3个角色四.静态代理1.代码示例:五.JDK动态代理1.代码示例:六.CGLIB动态代理1.代码示例 七.JDK动态代理和CGLIB动态代理区别八.两种在......