专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

大话设计模式之适配器模式

适配器模式

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

84_1.png

涉及到的角色描述

target: 目标接口可以是类、抽象类、接口

adaptee: 需要适配的类

adapter: 适配器

应用场景

  1、系统需要使用现有的类,而此类的接口不符合系统的需要。

  2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。

  3、通过接口转换,将一个类插入另一个类系中。

具体实现

  假设姚明刚进nba并不会说英文时,沟通就会存在障碍,此时急需一名翻译官来为他翻译教练所表达的意思;在适配器设计模式中姚明就是需要适配的类adaptee,翻译官就是adapter

教练表达的内容(目标接口)

package com.chenpt.designModel.adapterModel;

/**
 * @Author: chen
 * @Description:  远动员抽象类
 * @Date: created in 2018/8/24
 * @Modified By:
 */
public interface Player {
    void attack();//进攻

    void defense();//防守

}

 中锋:具体实现着 

package com.chenpt.designModel.adapterModel;

/**
 * @Author: chen
 * @Description: 中锋
 * @Date: created in 2018/8/24
 * @Modified By:
 */
public class Center implements Player {
    private String name;

    Center(String name){
        this.name=name;
    }

    @Override
    public void attack() {
        System.out.println("中锋进攻:"+name);
    }

    @Override
    public void defense() {
        System.out.println("中锋防守:"+name);
    }
}

 后卫

package com.chenpt.designModel.adapterModel;

/**
 * @Author: chen
 * @Description:  后卫
 * @Date: created in 2018/8/24
 * @Modified By:
 */
public class Guard implements Player{
    private String name;

    Guard(String name){
        this.name=name;
    }

    @Override
    public void attack() {
        System.out.println("后卫进攻:"+name);
    }

    @Override
    public void defense() {
        System.out.println("后卫防守:"+name);
    }

}

 外籍中锋(姚明创建者)

package com.chenpt.designModel.adapterModel;

/**
 * @Author: chen
 * @Description: 外籍中锋
 * @Date: created in 2018/8/24
 * @Modified By:
 */
public class ForeignCenter {
    private String name;

    ForeignCenter(String name){
        this.name=name;
    }

    public void 进攻() {
        System.out.println("外籍中锋进攻:"+name);
    }

    public void 防守() {
        System.out.println("外籍中锋防守:"+name);
    }
}

 适配器(翻译官)

package com.chenpt.designModel.adapterModel;

/**
 * @Author: chen
 * @Description:  翻译者(适配器)
 * @Date: created in 2018/8/24
 * @Modified By:
 */
public class Translator implements Player {

    ForeignCenter foreignCenter;

    Translator(ForeignCenter foreignCenter){
        this.foreignCenter=foreignCenter;
    }

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

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

 客户端

package com.chenpt.designModel.adapterModel;

/**
 * @Author: chen
 * @Description:
 * @Date: created in 2018/8/24
 * @Modified By:
 */
public class MainTest {

    public static void main(String[] args){
        Center center = new Center("大鲨鱼");
        center.attack();
        center.defense();
        Guard guard = new Guard("科比");
        guard.attack();
        guard.defense();

        ForeignCenter center2 = new ForeignCenter("姚明");

        Translator translator = new Translator(center2);
        translator.attack();
        translator.defense();

    }

}

 执行结果

中锋防守:大鲨鱼
后卫进攻:科比
后卫防守:科比
外籍中锋进攻:姚明
外籍中锋防守:姚明

 

 

 

 

文章永久链接:https://tech.souyunku.com/39882

未经允许不得转载:搜云库技术团队 » 大话设计模式之适配器模式

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们