设计模式——Adapter(适配器)模式

版权声明:本文为博主原创文章,如有错误劳烦指正。转载请声明出处,便于读取最新内容。——Bestcxx https://blog.csdn.net/bestcxx/article/details/85221630

前言

设计模式不是割裂的,根据场景来看,很多设计模式往往同时存在

适配器模式
书面用语

适配器模式的意图在于,使用不同接口的类所提供的服务为客户端提供它所期望的接口。

大白话

适配器模式的最简化描述是,为已有的功能进行一层封装,以满足特定的新需求

构造一个场景
场景描述
  • 类1有一个方法,获取当前时间的时间戳,方法名字为 getTimeStampNow
  • 类1 已经被其它客户端调用了
  • 类2 有一个产生随机数字的需求,但是 getRandomNumber 这样的方法名会更合适一些
场景探究
  • 可以使用 类1 的 getTimeStampNow 方法为 类2 服务,但是这样有一个问题,类2 只是想获取一个随机数字,至于这个随机数字是如何产生的,它并不是很关注,所以 类2 用 getRandomNumber 命名的方法更加合适
  • 类1 的 getTimeStampNow 不能被修改,它已经在为其他客户端服务
  • 显然如果我们有一个新的类,并提供名为 getRandomNumber 的方法,而 getRandomNumber 方法内部调用类1的 getTimeStampNow 即可满足需求
适配器模式给出的解决方案
方案一 接口适配
  • 类2 可以通过调用 接口3 来间接调用 类1,
    这样就需要 类4(适配类) 来实现接口3
    并且 类4(适配类) 继承 类1
  • UML 图
    在这里插入图片描述
方案二 类与对象适配
  • 类2 可以直接调用 类3(适配类),
  • 类3 内部引用 类1
  • UML
    在这里插入图片描述
适配器模式 适用场景
  • 当客户端希望以自己期望的形式调用服务端,但是又不能直接改造服务端
  • 可以提供一个满足客户端预期的适配类
  • 适配类内部调用服务端
  • 客户端调用适配类

猜你喜欢

转载自blog.csdn.net/bestcxx/article/details/85221630