设计模式之适配器模式

概述

由于面向对象程序设计本身就是从实际生活中汲取的灵感,将大千世界抽象到程序设计领域,所以所有的设计模式都是可以在日常生活中感受的到的。例如适配器模式,这个在日常生活中就太普遍了。
例如我们程序员经常遇到的电脑上提供的端口与要插入的接头匹配不上,而我们则可以通过一个中间的适配器将两边连接起来。

定义

将一个接口转换为客户端所期待的接口,从而使两个接口不兼容的类可以在一起工作

适配器模式还有个别名叫:Wrapper(包装器),顾名思义就是将目标类用一个新类包装一下,相当于在客户端与目标类直接加了一层。IT世界有句俗语:没有什么问题是加一层不能解决的如果有再加一层

使用场景

  • 当需要使用一个现存的类,但它提供的接口与我们系统的接口不兼容,而我们还不能修改它时
  • 当多个团队独立开发系统的各功能模块,然后组合在一起,但由于某些原因事先不能确定接口时。
  • 新旧系统的兼容问题
  • mybaits的日志问题
  • 需要一个统一的输出接口,而输入端的类型不可预知。

UML类图

在这里插入图片描述

从上图可见,适配器模式只有3个角色

  • Target

是一个接口,它是我们客户端使用的目标接口

  • Adaptee

我们想要使用的接口与Target不兼容的类,它可以是一个接口,也可以是一个类。

  • Adapter

适配器类,此模式的核心。它需要实现目标接口Target,而且必须要引用Adaptee,因为我们要在此类中包装Adaptee的功能

实例

最近小明工作上遇到了一件非常不开心的事:由于老项目中的日志系统非常粗糙,导致小明debug时候非常吃力,为此都加了好几次班了,于是小明调研了一个非常棒的三方开源日志库来改进项目的log系统,但是此开源库与项目中接口不兼容 (肯定的,兼容了也不用你在重构了),所以小明又一次展现出了其高超的程序设计能力,精准的采用了适配器模式来完成这个功能。

目标接口

系统原来的日志接口如下

public interface LogFactory {
   
    void 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶一菩提魁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值