适配器模式,是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

公司的发展速度很快,一不小心,就收购了一个创业团队去做细分市场。这么一个改变,对于公司来说,是一个进步,但是对于正在开发和维护公司内部员工系统的小蔡来说,却是一个不大不小的麻烦。

小蔡跑来找老王,说:“老王,你知道我们公司收购了一个小团队不?”

老王说:“知道啊,咋了?”

小蔡又问:“那你知道咋们公司的员工系统是有我再维护的不?”

老王又说:“知道啊,咋了?”

小蔡说:“我们公司的员工系统里对员工的定义,和他们团队的员工系统对员工的定义,不太一样啊。现在张经理让我在我们的系统里去集成他们的系统,我有个想法,你帮我看看对不对,好吗?”

//公司员工类
public class CompanyEmployee{//主键IDpublic int id;//用户名public String username;//联系方式public String mobile;
}//查询员工的Dao类
public class EmployeeDao {//根据员工ID获取员工对象public CompanyEmployee getEmployeeById(int id){//从数据库查询一个员工后返回return findEmployeeById(id);}
}

小蔡接着说:“你看,上面是我们系统现在的情况,但是创业团队他们那边的代码是下面这个样子。”

//创业团队的员工类
public class GroupEmployee {//主键IDpublic long id;//用户名public String email;//联系方式public String phone;
}//查询员工的Dao类
public class EmployeeDao {//根据员工ID获取员工对象public GroupEmployee getEmployeeById(int id){//从数据库查询一个员工后返回return findEmployeeById(id);}
}

小蔡接着说:“我们的员工类不一样,查询的方法也不一样,查询出来的结果也不一样,难道要我把所有增删改查重新写一遍吗?难道要我再使用员工对象的地方也多写一堆方法,来兼容不同的参数类型么?”

老王微微一笑,说:“你想多了。其实一个适配器模式就可以解决你的问题。”

小蔡好奇的问:“适配器是什么?”

老王说:“适配器,你的Mac Book上,电源线上那一大坨白色的圆角矩形,就是适配器,他让你不论接入220V电压,还是360V电压,你的Mac Book都可以正常充电。简单说,适配器就是不论接受的输入是什么,它的输出总是一定的。”

小蔡说:“听上去,挺不错的,那我该怎么做呢?”

老王说:“睁大眼睛看好咯。下面我要写适配器了。”

//员工适配器
public class EmployeeAdapter {public static CompanyEmployee getEmployee(GroupEmployee employee){CompanyEmployee companyEmployee = new CompanyEmployee();companyEmployee.id = (int) employee.id;companyEmployee.username = employee.email;companyEmployee.mobile = employee.phone;return companyEmployee;}
}

老王接着说:“就这样就行了。这样你就可以将他们的员工类型转成我们的员工类型了。如果将来还有其他的员工类型,我们再适配器里增加一个方法,转一下就行了。这样我们不用起重写增删改查了。”

小蔡眨了眨眼镜说:“老王,没对啊~他们的员工id是long型的~”

老王说:“那是他们疯了,一个员工系统的id怎么可能设计为long型?那得有多少员工啊?”

小蔡接着问:“感觉好像太简单了吧?真这么简单?”

老王说:“小蔡,设计模式是一种理念,并不是固定格式的代码。当然,经历过很多年的实践和总结后,的确有一套大家认为最合理的实践规范。但是我们要记住,设计模式只是经验的总结,只是一种理念,并不是固定格式,适配器模式的精髓在于,面对不同的输入,我们总是能得到固定的输出。这就足够了。要敢于质疑权威和经验,这样才能有思考和进步。对于目前我们的情况来说,我觉得这样的代码已经足够了。”

  • 老王讲设计模式(一)——策略模式
  • 老王讲设计模式(二)——代理模式
  • 老王讲设计模式(三)——单例模式
  • 老王讲设计模式(四)——多例模式
  • 老王讲设计模式(五)——工厂方法模式
  • 老王讲设计模式(六)——抽象工厂模式
  • 老王讲设计模式(七)——门面模式
  • 老王讲设计模式(八)——适配器模式

更多内容,正在赶来,敬请关注“小蔡和老王的技术日常”。
PS:小蔡和老王的技术日常,已经建立QQ群,欢迎各位小伙伴通过发送简信的方式联系我们,询问QQ号。

转载于:https://www.cnblogs.com/wisekingokok/p/6547163.html

老王讲设计模式(八)——适配器模式相关推荐

  1. 老王讲设计模式(一)——策略模式

    策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. 老王最近接到一个工作,上 ...

  2. 老王讲设计模式(三)——单例模式

    单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例. 早晨,老王来到公司,发现小蔡正对着电脑屏幕发呆,于是走到小蔡身后,发现小 ...

  3. 四象限法推导lm曲线_【老王讲放射】四象限理论

    FCR的研发者之一高野正雄将CR系统影像处理的运行原理归纳为"四象限"理论,EDR(曝光数据识别器)的功能和CR系统工作原理可以用"四象限"理论进行描述. 1. ...

  4. zemax中非序列添加相位面_老王讲放射MRI脉冲序列的基本参数

    今天这篇重点也是考师或中级的重中之重,里面比较多的字母代号,务必记好.有些人可能不知道,考试的时候这些重点可能会以什么样的方式出现? 那么我今天在每个重点后面都添加了问题,以供大家参考! 磁共振序列参 ...

  5. 老王讲二进制 0xFF;

    $a = 2; $b = ($a<<6) & 0xFF; var_dump($b);die; 代码如上  最后结果是 128 . $a   二进制 左移6 位  相当于 $a * ...

  6. java 的23种设计模式 之单身狗和隔壁老王的故事

    2019独角兽企业重金招聘Python工程师标准>>> 觉得代码写的别扭了,回头翻翻java 的23种设计模式. today,额,这么晚了,困了.就弄个最简单的单例模式吧. 单例模式 ...

  7. java 从入门到单身狗_java 的23种设计模式 之单身狗和隔壁老王的故事

    觉得代码写的别扭了,回头翻翻java 的23种设计模式. today,额,这么晚了,困了.就弄个最简单的单例模式吧. 单例模式:俗称单身狗 package singleton; public clas ...

  8. Java进阶专题(八) 设计模式之适配器模式、装饰者模式、观察者模式

    本章节将介绍:三个设计模式,适配器模式.装饰者模式和观察者模式.通过学习适配器模式,可以优雅的解决代码功能的兼容问题.另外有重构需求的人群一定需要掌握装饰者模式.本章节参考资料书籍<Spring ...

  9. 【学习记录】【B 站忠厚老实的老王】自动驾驶控制算法第一讲 绪论与前期准备

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.对自动驾驶的态度 工具 软件 书籍 自动驾驶技术漫谈 总结 前言 本文内容是对B站忠厚老实的老王视频的整理.侵删. ...

最新文章

  1. spring boot + spring batch 读数据库文件写入文本文件读文本文件写入数据库
  2. [YTU]_2566( 虚基类练习:动物)
  3. [Google Guava] 排序: Guava强大的”流畅风格比较器”
  4. springsecurity不拦截某个接口_SpringSecurity 默认表单登录页展示流程源码
  5. 【Python】Pandas groupby加速处理数据
  6. [vue-cli] 说下你了解的vue-cli原理?你可以自己实现个类vue-cli吗?
  7. 《集体智慧编程》笔记(1 / 12):集体智慧导言
  8. MathType 在Word中的应用
  9. 汉字转拼音(同音异形)-工具
  10. 激活函数(激励函数)理解总结
  11. 虚拟机 桥接模式和NAT模式下的ip地址、更改kali虚拟机的网络适配器
  12. Ceph分布式存储详解
  13. 写SQL的21个好习惯
  14. 信息管理系统(五)战略规划与发开方法
  15. 一台计算机安装几个操作系统,电脑装3个系统-一台电脑可以安装几个操作系统?...
  16. mysql数据库基础语句讲解
  17. attention机制及self-attention(transformer)
  18. 微信支付-APP支付
  19. 2021年Java开发实战!java开发安卓app的流程
  20. c语言邻接表做公园导游系统,公园导游管理系统

热门文章

  1. Meteor 加入账户系统
  2. 打包签名时出现Conversion to Dalvik format failed with error 1
  3. cocos2d-x for wp8 设置横竖屏
  4. ubuntu nginx php问题研究
  5. NHibernate Profiler使用方法
  6. Windows Phone 7 开发 31 日谈——第25日:外部API
  7. android 获取芯片版本_谷歌:未来Android手机将获得4年软件更新
  8. (140)FPGA面试题-FPGA IP简介
  9. (79)FPGA如何处理跨时钟域问题-面试必问(三)(第16天)
  10. 电脑没有ps怎么改照片dpi_设计干货整理丨 平面设计师必知的打印常识与电脑性能...