适配器模式

适配器模式

1.定义:

将一个类的接口转换成客户希望的另外一个接口;Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

2.适配器解决的问题

简单来说就是需要的东西就在面前,但却不能使用,短时间内也无法改造它,于是我们就想办法适配他

适配器模式UML

image-20210507145337237.png

简单的代码实现:
代码结构图


image.png

1.新建一个抽象类Player并提供attack和defence方法

package org.example.adapter;

/**
 * @author 
 * @date 2021/3/24 11:15
 **/
public abstract class Player {
private String name;
abstract void attack();
abstract void defense();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.新建一个Center类并继承Player类实现attack和defence方法

package org.example.adapter;

/**
 * @author 
 * @date 2021/3/24 11:17
 **/
public class Center extends Player {
    @Override
    void attack() {
        System.out.println("center attack");
    }

    @Override
    void defense() {
        System.out.println("center defense");
    }
}

3.新建一个ForeignCenter类提供进攻和防守方法

package org.example.adapter;

/**
 * @author 
 * @date 2021/3/24 11:19
 **/
public class ForeignCenter  {

    void 进攻() {
        System.out.println("中锋进攻");
    }

    void 防守() {
        System.out.println("中锋防守");
    }
}

4.新建一个适配器类translator类继承抽象类并实现attack和defence方法,但是在该类中的attack方法调用的是ForeignCenter中的进攻方法,defence方法调用的是Foreign中的防守方法;相当于translator类是一个适配器类,将教练讲的英文翻译成中文,使ForeignCenter能够更好的理解,达到使用ForeignCenter的作用

package org.example.adapter;

/**
 * @author 
 * @date 2021/3/24 11:19
 **/
public class Translator extends Player {
    ForeignCenter foreignCenter = new ForeignCenter();

    @Override
    void attack() {
        foreignCenter.进攻();
    }

    @Override
    void defense() {
        foreignCenter.防守();
    }
}

客户端调用:

package org.example.adapter;

/**
 * @author 
 * @date 2021/3/24 11:23
 **/
public class Client {

    public static void main(String[] args) {
   
        Center center = new Center();
        center.defense();
        Translator translator = new Translator();
        translator.attack();
        translator.defense();
    }
}

运行结果:


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基本概念 适配器模式是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不能兼容而不能...
    傻傻小萝卜阅读 2,118评论 0 0
  • 其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...
    zhuzhiqiang00阅读 6,335评论 0 2
  • 个人学习笔记分享,当前能力有限,请勿贬低,菜鸟互学,大佬绕道如有勘误,欢迎指出和讨论,本文后期也会进行修正和补充 ...
    Echo_YeZ阅读 3,392评论 0 0
  • 适配器模式 当项目中的埋点使用了友盟的SDK,哪一天,产品要求把友盟的SDK换成神策数据的,因为两个SDK的接口不...
    Corbin___阅读 3,523评论 1 4
  • 什么是适配器模式?什么时候用? 说到适配器模式,大家肯定会想到Android开发中的ListView和Recycl...
    h2coder阅读 2,394评论 0 2