美文网首页
2021-07-26适配器模式与桥接模式

2021-07-26适配器模式与桥接模式

作者: 竹blue | 来源:发表于2021-07-27 08:39 被阅读0次

适配器模式

定义

适配器模式(Adapter Pattern)又叫做变压器模式,它的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法工作的类能够一起工作,属于结构型模式。

适用场景

  • 已存在类的方法和需求不匹配的情况;

  • 适配器模式不是软件设计阶段考虑的设计模式,是后期维护时的方案,解决的是兼容性问题。

通用写法

适配器一般包含三种角色:

  • 目标角色(Target):期望的接口;

  • 源角色(Adaptee):系统中,内容满足客户需求(需转换),但接口不匹配的接口实例;

  • 适配器(Adapter):将源对象转换为目标角色的类实例;

类适配器原理:通过继承来实现适配器功能;具体做法:让Adapter实现Target接口,并且继承Adaptee,这样Adapter就具备Target和Adaptee的特性,就可以将两者进行转化了。

适配器模式.png 类适配器.png
对象适配器——解决类适配器最少知道原则(因为类适配器继承了原对象,所以知道他的所有的方法)

原理:通过组合来实现适配器功能;

具体做法:让Adapter 实现Target接口,然后内部持有Adaptee实例,然后在Target接口规定的方法内转化Adaptee。

对象适配器.png

注意:类适配器和对象适配器注重原对象方法的适配,如果对象中方法过多则建立使用接口适配器

接口适配器

原理:利用抽象类实现接口,并且空实现接口众多方法。

接口适配器.png
应用:多场景登录
适配器-多场景登录.png

适配器模式优、缺点

优点:

  • 提供类的复用,现有类的复用,但无需改变类本身。

  • 目标类和适配器类解耦,提供程序的拓展性

  • 满足开闭原则

缺点:

  • 适配器编写过程需要全面考虑,增加系统复杂性

  • 增加代码阅读难度

源码体现

SpringAOP中的AdvisorAdapter类

class MethodBeforeAdviceAdapter implements AdvisorAdapter, Serializable {
 /**
 * 判断是否兼容的方法,可作为适配器模式的特征方法
 */
 @Override
 public boolean supportsAdvice(Advice advice) {
 return (advice instanceof MethodBeforeAdvice);
 }

 @Override
 public MethodInterceptor getInterceptor(Advisor advisor) {
 MethodBeforeAdvice advice = (MethodBeforeAdvice) advisor.getAdvice();
 return new MethodBeforeAdviceInterceptor(advice);
 }

}

桥接模式——替代多层继承,强调不同维度的之间的组合

定义

桥接模式(Bridge Pattern)是将抽象部分与它的具体实现部分分离,使它们都可以独立的变化,通过组合的方式建立两个类之间的联系,核心在于解耦抽象和实现,属于结构型模式

适用场景

  • 不希望使用继承,或多层继承导致系统类个数剧增;

  • 一个类存在两个(或多个)独立变化的维度,而这些维度都需要独立进行扩展

通用写法

桥接模式.png

桥接模式主要包含4种角色:

  • 抽象(Abstraction):该类持有一个对实现角色的引用,抽象角色中的方法需要实现角色来实现。抽象角色一般为抽象类(构造函数规定子类要传入一个实现对象);

  • 修正抽象(RefinedAbstraction):Abstraction的具体实现,对Abstraction的方法进行完善和扩展;

  • 实现(Implement):确定实现维度的基本操作,提供给Abstraction使用。该类一般为接口或抽象类;

  • 具体实现(ConcreteImplement):Implement的具体实现。


    桥接模式-例子.png
//TODO AbstractCourse补充
源码分析——Driver
桥接模式-Driver.png

桥接模式的优缺点

优点:

  • 分离抽象部分及其具体实现部分

  • 提供系统扩展性

  • 符合开闭和合成复用原则

缺点:

  • 增加了系统的理解与设计难度

  • 需要正确识别系统中多个独立变化的维度;


    桥接模式比较.png

作业内容

  1. 1.完善第三方登录接口,完成不修改接口也能实现自动适配的功能。

  2. 2.说说你对桥接模式的理解。

相关文章

  • 设计模式的分类

    接口型模式 适配器模式 外观模式 组合模式 桥接模式

  • 设计模式:结构型

    享元模式 (Pools,Message) 代理模式 适配器模式 :类适配器和对象适配器 装饰者模式 外观模式 桥接...

  • VMware网络连接模式

    VMware 桥接模式 VMware桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机...

  • Java设计模式——桥接模式

    Java设计模式之桥接模式 回顾 上一期分享了适配器模式,主要为了实现解耦 桥接模式 简介 桥接模式是对象的结构模...

  • 设计模式(结构型模式)

    适配器模式、 装饰器模式、 代理模式、 外观模式、 桥接模式、 组合模式、 享元模式 适配器模式 即定义一个包装类...

  • 设计模式

    设计模式: 1责任链模式 2桥接模式 3适配器模式 4单例模式 ...

  • 结构模式

    结构型模式包括:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种...

  • TypeScript设计模式-适配器模式|桥接模式|建造者模式

    适配器模式 测试文件: 桥接模式 测试文件: 建造者模式 测试文件: github

  • wmare配置centos7网络

    桥接模式 1、编辑 >虚拟机网络编辑。 新增桥接模式 2、右键虚拟机>设置>网路适配器。选择桥接模式 4、沟中vm...

  • Linux系统桥接模式下配置静态ip地址

    一、桥接模式 VMware桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,此时虚拟机就可以...

网友评论

      本文标题:2021-07-26适配器模式与桥接模式

      本文链接:https://www.haomeiwen.com/subject/pzrwmltx.html