13.装饰器,桥接和适配器模式的异同

介绍

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

适配器模式

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

该模式的关键点是:

·        主体类和适配器类实现相同的接口A

·        主体类依赖适配器类

·        适配器类依赖抽象接口B

·        被适配的类实现抽象接口B

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

桥接模式

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

该模式的关键点是:

·        主体类依赖抽象A

·        主体类具有多个不同的实现类

·        抽象A具有多个不同的实现类

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

装饰器模式

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

该模式的关键点是:

·        抽象A具有多个具体子类

·        装饰器类依赖抽象A

·        装饰器类实现抽象A

·        装饰器类存在不同子类

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

小结

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

·        适配器模式三角结构的位置是一上一下(因为适配器依赖抽象)。

·        桥接模式三角结构的位置是并列的(主体类直接依赖抽象)。

·        装饰器模式三角结构的位置也是并列的,但是多出了一条线(主体类不仅依赖抽象,而且实现该抽象接口)

### 回答1: 桥接模式和适配器模式都是结构型设计模式,主要用于处理不同类之间的接口问题,但它们的适用场景和解决问题的方式略有不同。 相同点: 1. 都是为了解决两个不兼容的接口之间的问题; 2. 都使用组合关系将两个不同的类连接起来; 3. 都可以提高代码的可扩展性和复用性。 不同点: 1. 定义不同:桥接模式是为了让接口和实现部分分离,以便它们可以独立地变化。适配器模式是为了将一个类的接口转换成客户端所期望的另一个接口。 2. 用途不同:桥接模式通常用于抽象类和具体类之间的接口,而适配器模式通常用于将现有类的接口转换为其他客户端所期望的接口。 3. 实现方式不同:桥接模式使用组合关系将两个不同的类连接起来,并且这两个类可以独立地扩展。适配器模式使用继承和组合的方式,将一个类的接口转换成另一个接口。 总的来说,桥接模式主要是为了解决抽象类和具体类之间的接口问题,而适配器模式主要是为了解决现有类与客户端所期望的接口不一致的问题。 ### 回答2: 桥接模式和适配器模式作为常见的设计模式,都用于解决不同类之间的接口不兼容的问题,但是它们在解决问题的方式和应用场景上有一些不同。 首先,桥接模式的主要目标是将抽象与实现分离,使它们能够独立地变化。在桥接模式中,抽象和实现是通过一个桥接接口连接起来的。这种模式可以在运行时动态地选择具体的实现,而不会对客户端代码造成任何影响。桥接模式常用于系统中存在多个独立变化的维度时,可以将这些维度分离开来,从而提供更好的灵活性和可扩展性。 而适配器模式的主要目标是将一个类的接口转换成客户端所期望的另一个接口。适配器模式主要通过创建一个适配器类,将客户端的调用转换为被适配类的相应调用来实现。适配器模式常用于集成已有的组件或类库时,可以通过适配器来适配不同的接口,无需修改原有的代码。 两种模式的相同点是都能够解决接口不兼容的问题,都是通过创建一个中间层来实现接口转换。而不同点在于桥接模式更重视抽象和实现的分离,可以将不同维度的变化独立起来,提供更好的扩展性;适配器模式则更重视在已有代码的基础上进行接口转换,将已有代码和新接口进行适配,保证代码的兼容性。 综上所述,桥接模式和适配器模式在解决接口不兼容问题时具有一定的相似性,但在具体的应用场景和解决问题的方式上有所不同。 ### 回答3: 桥接模式和适配器模式是两种常见的设计模式,它们都属于结构型模式,用于处理不同接口之间的交互。下面我来介绍一下这两种模式的异同异同之处: 1. 定义:桥接模式(Bridge Pattern)是一种将抽象和实现解耦的设计模式,使得它们可以独立地变化。适配器模式(Adapter Pattern)将一个类的接口转换成客户希望的另一个接口。 2. 目的:桥接模式的目的是将抽象部分与实现部分分离,使它们可以独立地变化。适配器模式的目的是让两个不兼容的接口可以一起工作。 3. 用途:桥接模式通常用于抽象接口和实现之间存在多对多关系的情况,适配器模式通常用于将一个类的接口转换成另一个类的接口。 4. 实现方式:桥接模式使用组合关系将抽象部分和实现部分分离,通过桥接接口将它们连接起来。适配器模式通过继承或者对象组合的方式来适配不同的接口。 5. 关注点:桥接模式侧重于对抽象和实现进行解耦,注重抽象部分的稳定性和可扩展性。适配器模式侧重于将一个接口转换成另一个接口,注重两个接口的兼容性和一致性。 6. 灵活性:桥接模式可以在运行时动态切换抽象和实现的具体实现,使系统更加灵活。适配器模式在编译时或者运行时进行适配,不具备动态切换的能力。 总结起来,桥接模式和适配器模式都是用于处理不同接口之间的交互,但是目的和实现方式略有不同。桥接模式关注于抽象接口和实现的解耦,适配器模式关注于接口之间的适配转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值