适配器模式

当我们需要一个转换头的时候,可以考虑到适配器模式
现实生活中的适配器(兼容):
VGA-HDMI/充电头/插头转换/编码解码/调制解调器

系统应用场景:
老系统运行了很久比较稳定,为了保证其稳定性,不便再去修改原来的代码,但是又要为了兼容新的需求或者标准,我们不得不在系统中再去做一些文章。(向下兼容)

系统应用场景举例:
登录------
用户名、密码输入 后台验证用户名密码的有效性--> 登录结果保存到session中-->写入到浏览器cookie
随着互联网技术的发展,用户的需求的多样化
登录关联了新的方式:QQ登录,微信登录,手机号登录,微博登录等
原始系统代码很复杂,不想随意去修改原始系统,就可以使用到适配器模式

JAVA中的应用

以Adapter结尾的

HttpWebHandleAdapter

WebSocket

登录的适配器示例代码

返回类型的基础代码:

package com.debuggg.test1.main5;public class ResultMsg {private String code;private String msg;private Object data;public ResultMsg(String code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}
}

用户信息:

package com.debuggg.test1.main5;public class Mmeber {private String username;private String password;private String mid;private String info;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getMid() {return mid;}public void setMid(String mid) {this.mid = mid;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}

原始登录代码:

package com.debuggg.test1.main5;import com.debuggg.test1.templatemethod.entity.Member;public class SigninService {/*** 作者 ZYL* 功能描述 : 注册* 日期 2020-04-13 17:32  * 参数 username* 参数 password* 返回值 com.debuggg.test1.main5.ResultMsg*/public ResultMsg regist(String username, String password){return new ResultMsg("200","注册成功",new Member());}/*** 作者 ZYL* 功能描述 : 登录* 日期 2020-04-13 17:32* 参数 username* 参数 password* 返回值 com.debuggg.test1.main5.ResultMsg*/public ResultMsg login(String username, String password){return  null;}
}

适配器登录的代码:

package com.debuggg.test1.main5;/*** 作者 ZYL* 功能描述 : 稳定的方法不去动,直接继承下来* 日期 2020-04-13 17:34* 参数 null* 返回值 */
public class SigninForThirdService extends SigninService {public ResultMsg loginForQQ(String openId){//1.认为openId是全局唯一,我们可以把它当做是用户名username//2.密码默认为null(空的),或者默认值"QQ_EMPTY"//3.注册(在原有系统创建一个用户)//4.调用原来的登录方法return loginForRegist(openId,null);}public ResultMsg loginForWechat(String openId){return null;}public ResultMsg loginForToken(String token){//通过token拿到用户信息,重新登录一次return null;}public ResultMsg loginForTelephone(String phone, String code){//把手机号设置为用户名,密码设置为空,来操作return null;}public ResultMsg loginForRegist(String username, String password){super.regist(username, password);return super.login(username,password);}
}

测试代码:

package com.debuggg.test1.main5;/*** 作者 ZYL* 功能描述 : 适配器模式** 需要一个转换头的时候,可以考虑到适配器模式* 现实生活中的适配器(兼容):*  VGA-HDMI/充电头/插头转换/编码解码/调制解调器** 系统应用场景:*  老系统运行了很久比较稳定,为了保证其稳定性,不便再去修改原来的代码,但是又要为了兼容新的需求或者标准,我们不得不在系统中再去做一些文章。(向下兼容)** 系统应用场景举例:*  登录------*  用户名、密码输入    后台验证用户名密码的有效性--> 登录结果保存到session中-->写入到浏览器cookie*  随着互联网技术的发展,用户的需求的多样化*  登录关联了新的方式:QQ登录,微信登录,手机号登录,微博登录等*  原始系统代码很复杂,不想随意去修改原始系统,就可以使用到适配器模式** 日期 2020-04-13 17:23* 参数 null* 返回值*/
public class AdapterTest {public static void main(String[] args) {SigninForThirdService service = new SigninForThirdService();//不改变原来的代码,也要实现新的登录//还可以再加一层策略模式service.loginForQQ("thisisopenidxxxxxxx");}
}

JAVA设计模式-适配器模式(Adapter)相关推荐

  1. Java设计模式-适配器模式Adapter

    定义:"转换接口" 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 我理解的"一个类的接口&q ...

  2. Java设计模式—适配器模式(adapter pattern)

    现在的手机很多都取消了3.5mm的耳机接口,只留下了一个type-c接口.但是我现在只有一个3.5mm圆孔接口的耳机,我不得不通过一个转接线使得3.5mm的耳机变成type-c接口. //Type-C ...

  3. Java | 设计模式-适配器模式

    继代理模式后又来到适配器模式啦,想看之前的也有哦.持续更新中哦.让我们一起加油吧兄弟们,干他. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 你好,如果喜欢,请一起坚持!! ...

  4. java设计模式适配器模式_Java中的适配器设计模式

    java设计模式适配器模式 适配器设计模式是一种结构设计模式 ,可以帮助我们连接到通过不同接口公开相似功能的旧版或第三方代码. 适配器的现实世界是我们用来将USB电缆连接到以太网端口的类比. 在设计一 ...

  5. java设计模式适配器模式_Java解释器设计模式

    java设计模式适配器模式 Interpreter design pattern is one of the behavioral design pattern. Interpreter patter ...

  6. 【设计模式】Java设计模式 - 适配器模式

    [设计模式]Java设计模式 - 适配器模式

  7. Java设计模式——适配器模式【Adapter Pattern】

    一.引言 23种设计模式大概分为三大类: 5种(创建型模式):工厂方法模式.抽象工厂模式.单例模式.原型模式.建造者模式. 7种(结构型模式):适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组 ...

  8. JAVA设计模式--适配器模式

    目录 1.什么是适配器模式 2.适配器模式的适用场景 3.适配器模式的结构 4.适配器模式应用举例 5.适配器模式的选择 参考文章 1.什么是适配器模式 适配器(Adapter)模式又叫做包装( Wr ...

  9. 3.设计模式--适配器模式(adapter模式)

    1.场景 适配器模式可能是开发人员用的最多的一种设计模式,做后台开发你可能每天都在使用.只是不知道他的名字:现实中的适配器你应该不会陌生,新款的IQOO 8 pro手机充电器已经达到了120w,实际上 ...

最新文章

  1. oracle怎么adi导入,Web adi 导入笔记 详细图解
  2. json java 实例_java JSON数据转对象
  3. 本地打开extjs api docs 的方法
  4. 把 Rational Rose 的图表保存为图片文件
  5. delphi 获取数组长度_shell 普通数组
  6. selenium webdriver中的常用鼠标操作
  7. c语言turboc报错显示,C语言新手问个关于C语言在TurboC上运行的问题
  8. 【JAVA程序设计】(C00003)基于springboot+mybatis的在线购物商城系统
  9. 科创板交易规则知多少
  10. mysql error 1114_ERROR 1114 (HY000): The table 'ds_data' is full (innodb_data_file_path)
  11. iOS 客户端 IM 以及列表 UI 框架
  12. python标准数据类型叮叮叮
  13. 移动开发需要了解的UI设计知识
  14. Linux命令学习总结
  15. 《工程伦理与学术道德》之《工程中的价值、利益与公正》
  16. opencv 改变光标_opencv编译方法
  17. 每日新闻丨五方面推动云计算产业发展;字节跳动与澎湃合资成立视听科技
  18. Rocket MQ发送消息报错: service not available now
  19. jQuery插件jquery.fullPage.js
  20. 英语口语考试资料Food

热门文章

  1. numpy 创建数组
  2. SQL数据表层面操作(DDL)
  3. CentOS7安装后没网络的解决方法
  4. 怎么让照片变年轻_女生都想要变年轻,但是应该怎么做呐?其实有了背带裤就可以搞定...
  5. java万年历表怎么输出6_用Java编程输出万年历的功能实现
  6. VCAP6 – DCV DESIGN COLLECTION
  7. Docker学习总结(48)——Docker 四种网络模式温故
  8. BetterFE 前端技术周刊 - 2019/03/11
  9. React-Router 4 两个常用路由变量
  10. jquery 事件冒泡的介绍以及如何阻止事件冒泡