查看原文
其他

自从用了适配器模式,我的代码清爽多了!!!

lucksheep SpringForAll社区 2021-05-27

点击上方☝SpringForAll社区 轻松关注!

及时获取有趣有料的技术文章

本文来源:http://r6d.cn/DFvQ


  • 文章目录

    • 一、适配器模式简介;

    • 二、实战演练;

一、适配器模式简介

  1. 简介:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作

  2. 特点:注重兼容、转换。适配者与被适配这之间没有层级关系,也没有必然联系。

  3. 归类:结构型模式

二、实战演练

demo事例:我们常用的场景中一个登入接口各种登入方式

  1. 登入接口 LoginService.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package com.demo.adapter;

    public interface LoginService {

    /**
    * 登录的方法
    * @param username
    * @param password
    * @return
    */
    public void login(String username,String password,String type);
    }
  2. 扩展的实现类 LoginExtendService.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    package com.demo.adapter;

    /**
    * 整体登入扩展的方法
    */
    public class LoginExtendService implements LoginService{

    public void loginByQQ(String openId){
    //通过openId转换现有的用户,如果没有则注册在调用登入接口,可能要做特殊处理逻辑
    login(openId,null,"QQ");
    }

    public void loginByWeixin(String openId){
    login(openId,null,"weixin");
    }

    public void loginForTelphone(String phone,String code){
    //验证验证码之后,没有用户的情况可能要注册,等其它逻辑,然后在登入
    login(phone,null,"phone");
    }
    @Override
    public void login(String username, String password,String type) {
    System.out.println("用户:【"+username+"】 通过【"+type+"】方式登入成功");
    }
    }
  3. 测试 AdapterTest .java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package com.demo.adapter;

    public class AdapterTest {

    public static void main(String[] args) {
    LoginExtendService loginExtendService=new LoginExtendService();
    loginExtendService.loginByQQ("afasfasfasdfa");
    //在不改变原来代码的情况下,兼容新的需求;
    }
    }


墙裂推荐

【深度】互联网技术人的社群,点击了解!



● IntelliJ IDEA 2020.3 EAP 3 新特性

● 真实业务订单拆单架构与实战

● 双十一剁手了没?了解下电商系统订单配送模块的架构与设计

● 什么?知乎又挂了?我们来聊聊微服务的高可用如何保障



关注公众号,回复“spring”有惊喜!!!

如果资源对你有帮助的话


❤️给个「在看」,是最大的支持❤️

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存