桥接模式

1、解决什么问题?

桥接模式常用于多个类型组合变化问题,如商城商品分类问题。

假设电脑商城中销售电脑,电脑又分为台式、笔记本、平板,台式按照品牌划分,则分为联想台式机、戴尔台式机、神舟台式机,笔记本和平板也按照这三个品牌划分,结果如下图所示,这种划分方式也就是多继承。

若现在商城需要增加销售苹果品牌的台式机、笔记本、平板,则需要在增加苹果台式机、苹果笔记本、苹果平板三个类进行处理。如此一来则产生两个问题:

扩展麻烦:每次增加一个品牌就需要增加三个类,若增加N个品牌,则需要3N个类,扩展相当麻烦!

违反单一职责原则:一个方法只干一件事,一个类也应如此。若照上述设计,联想台式机类既负责联想品牌又负责台式机,因而违反单一职责原则。

为解决上述两问题,桥接模式应运而生。

2、什么是桥接模式?

桥接模式属于结构性模式。它基于类的单一职责原则,通过聚合将抽象部分与它的实现部分分离,使它们都可以独立地变化(各维度独立变化不影响其他维度)从而实现松散耦合,减少代码量。

3、UML图

桥接模式包含如下角色:

  • Abstraction:抽象类(相当于电脑)
  • RefinedAbstraction:扩充抽象类(相当于台式机、笔记本、平板)
  • Implementor:实现类接口(相当于品牌)
  • ConcreteImplementor:具体实现类(相当于联想、神舟、戴尔)
4、应用场景
  • JDBC驱动
  • AWT的peer架构

results matching ""

    No results matching ""