共计 1026 个字符,预计需要花费 3 分钟才能阅读完成。
一、桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者能够独立变动。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接构造,来实现二者的解耦。
应用场景: 1、如果一个零碎须要在构件的抽象化角色和具体化角色之间减少更多的灵活性,防止在两个档次之间建设动态的继承分割,通过桥接模式能够使它们在形象层建设一个关联关系。2、对于那些不心愿应用继承或因为多层次继承导致系统类的个数急剧减少的零碎,桥接模式尤为实用。3、一个类存在两个独立变动的维度,且这两个维度都须要进行扩大。
实现
咱们有一个作为桥接实现的 DrawAPI
接口和实现了 DrawAPI
接口的实体类 RedCircle
、GreenCircle
。Shape
是一个抽象类,将应用 DrawAPI
的对象。BridgePatternDemo
类应用 Shape
类来画出不同色彩的圆。
桥接模式代码案例
二、适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它联合了两个独立接口的性能。
利用实例 :1、美国电器 110V,中国 220V,就要有一个适配器将 110V 转化为 220V。2、JAVA JDK 1.1 提供了 Enumeration 接口,而在 1.2 中提供了 Iterator 接口,想要应用 1.2 的 JDK,则要将以前零碎的 Enumeration 接口转化为 Iterator 接口,这时就须要适配器模式。3、在 LINUX 上运行 WINDOWS 程序。4、JAVA 中的 jdbc。
案例
咱们有一个 MediaPlayer 接口和一个实现了 MediaPlayer 接口的实体类 AudioPlayer。默认状况下,AudioPlayer 能够播放 mp3 格局的音频文件。
咱们还有另一个接口 AdvancedMediaPlayer 和实现了 AdvancedMediaPlayer 接口的实体类。该类能够播放 vlc 和 mp4 格局的文件。
咱们想要让 AudioPlayer 播放其余格局的音频文件。为了实现这个性能,咱们须要创立一个实现了 MediaPlayer 接口的适配器类 MediaAdapter,并应用 AdvancedMediaPlayer 对象来播放所需的格局。
AudioPlayer 应用适配器类 MediaAdapter 传递所需的音频类型,不须要晓得能播放所需格局音频的理论类。AdapterPatternDemo 类应用 AudioPlayer 类来播放各种格局。
代码案例:
适配器模式