Java设计模式--------装饰器,桥接和适配器模式的异同

1、介绍

前面几篇文章分别介绍了装饰器模式,桥接模式和适配器模式这三种设计模式。这三种设计模式,从设计思想角度上看是非常相似的。三者都是结构型的设计模式,而且都存在依赖抽象的情况。但是三者之间却又存在一些微妙的区别,这也是本文重点关注的内容。

2、适配器模式

该模式重点强调的是适配的功能。

该模式的关键点是:

  • 主体类和适配器类实现相同的接口A
  • 主体类依赖适配器类
  • 适配器类依赖抽象接口B
  • 被适配的类实现抽象接口B

最终的效果就是,主体类可以使用之前不相关的被适配类中的某些功能。

把前文Java设计模式----------适配器模式中的UML图拿过来,结构是这样的
图片描述


3、桥接模式

该模式重点强调的是多维度的变化

该模式的关键点是:

  • 主体类依赖抽象A
  • 主体类具有多个不同的实现类
  • 抽象A具有多个不同的实现类

最终的效果就是,主体类的实现类和抽象的实现类分别可以在两个维度上进行各自的变化。如果主体类依赖多个抽象,则维度进行增加,方便扩展。

把前文Java设计模式----------桥接模式中的UML图拿过来,结构是这样的
图片描述


4、装饰器模式

该模式重点强调的是装饰功能。

该模式的关键点是:

  • 抽象A具有多个具体子类
  • 装饰器类依赖抽象A
  • 装饰器类实现抽象A
  • 装饰器类存在不同子类

最终的效果就是,(装饰器实现类)对(原抽象的子类)进行某些方法的功能加强。

把前文Java设计模式----------装饰器模式中的UML图拿过来,结构是这样的
图片描述

5、小结

其实从三者的UML图可以看出三种模式都是2个三角结构,但是位置不同。

  • 适配器模式三角结构的位置是一上一下(因为适配器依赖抽象)。
  • 桥接模式三角结构的位置是并列的(主体类直接依赖抽象)。
  • 装饰器模式三角结构的位置也是并列的,但是多出了一条线(主体类不仅依赖抽象,而且实现该抽象接口)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值