ymkNK / ymkNK.github.io

Personal Blog
https://lllovol.com
2 stars 0 forks source link

设计模式-Bridge桥接模式 #117

Open ymkNK opened 2 years ago

ymkNK commented 2 years ago

https://lllovol.com/p/2021/10/bridge/

简介 桥接是一种结构型设计模式,可将一个大类或一系列紧密,相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。 问题 同一套服务界面,想在不同的操作系统下实现 解决方案 让我们试着用桥接模式来解决这个问题。该模式建议将类拆分为两个类层次结构: 抽象部分:程序的GUI层 实现部分:操作系统的API 结构 抽象部分(Abstraction)提供高层控制逻辑,依赖于完成底层实际工作的实现对象。 实现部分(Implementation)为所有具体实现声明通用接口。抽象部分仅能通过在这里声明的方法与实现对象交互。 具体实现(Concrete Implementations)中包括特定于平台的代码。 精确抽象(Refined Abstraction)提供控制逻辑的变体。与其父类一样,它们通过通用实现接口与不同的实现进行交互。 通常情况下,客户端(Client)仅关心如何与抽象部分合作。但是,客户端需要将抽象对象与一个实现对象连接起来。 适合应用场景 如果你想要拆分或重组一个具有多重功能的庞杂类(例如能与多个数据库服务器进行交互的类),可以使用桥接模式。 如果你希望在几个独立维度上扩展一个类,可使用该模式。 如果你需要在运行时切换不同实现方法,可使用桥接模式。 优缺点 你可以创建与平台无关的类和程序。 客户端代码仅与高层抽象部分进行互动,不会接触到平台的详细信息。 开闭原则。你可以新增抽象部分和实现部分,且它们之间不会相互影响。 单一职责原则。抽象部分专注于处理高层逻辑,实现部分处理平台细节。 对高内聚的类使用该模式可能会让代码更加复杂。