设计模式-适配器模式

 
  • 文章目录
    • 一、适配器模式简介;
    • 二、实战演练;

一、适配器模式简介

  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");
    //在不改变原来代码的情况下,兼容新的需求;
    }
    }

 评论