适配器模式(Adapter)
  TEZNKK3IfmPf 24天前 15 0

用途:将一个类的接口转换成客户希望的另一个类的接口。

例子:电脑网线USB转接器

角色:

电脑(客户端)、网线、转接器、目标接口NetToUsb

  • 目标接口或抽象类(目标抽象类或目标抽象接口):这里例子中就是目标接口USB
  • 适配者类(需要适配的类 Adaptee):它定义了一个已经存在的接口,这个接口需要被适配。在这个例子中网线类就是那个已经存在的接口,但是网线不可以直接插到电脑的USB上。
  • 适配器类(Adapter):包装网线,让网线支持USB接口,把网线插到USB上并处理请求。
  • 适配器类需要同时和两个类打交道,它要把网线和电脑的USB接口连接在一起。有两种方式,
  • 一种是继承要被适配的类(网线类)同时实现目标接口。
  • 另一种是使用组合模式,不去继承适配者类,而是使用聚合的方式,让网线类作为适配器类的一个成员变量,然后再去实现目标抽象接口。

分类:

  • 类适配器:继承模式,继承需要被适配的类,实现目标抽象接口。
  • 对象适配器:组合模式,把需要适配的类作为成员属性变量,同时实现目标抽象接口。

核心理解

适配器模式做的事情是这样的:

有两个不相干的类,但是它们想组合到一起使用,那么就通过一个适配器把二者适配在一起使用。

比如说:电脑有一个USB接口,而网线的接头不是USB的,可是电脑想上网,那么就需要一个接口转接的适配器来完成这个工作,这时候会出现三个类。

  1. 网线类:这个类提供了具体要实现的业务方法,也就是它可以完成上网这件事,比如说有一个方法是net()
  2. USB接口类:这个接口是用户想要的接口,用户希望通过USB接口完成上网这件事,比如说有一个方法是execute()
  3. 转接器类:这个类来完成二者的适配:首先实现USB接口,然后或者通过继承网线类或者通过组合网线类,选择二者的任意一个方式,重写USB接口里的方法execute(),在这个方法里去调用网线类的真实业务方法net()来完成上网这件事
  4. 客户端在调用时,只需要把实例化的网线类通过set注入交给适配器,然后通过调用适配器类的execute()方法就可以完成上网这件事情!
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 24天前 0

暂无评论

推荐阅读
TEZNKK3IfmPf