Java桥接模式(bridge)

简介: Java桥接模式(bridge)


文章目录

   桥接模式

       1.多层继承结构

           1.1扩展性问题

           1.2违反单一职责原则

       2.桥接模式实现

           2.1场景分析

           2.2桥接模式核心要点:

       3.代码实现

       4.桥接模式总结

 本文介绍下Java设计模式中的桥接模式

桥接模式

1.多层继承结构

 在现实生活中比如商城中以电脑为例来说,如何处理电脑销售分类的问题,我们可以使用多层继承结构实现这种场景

image.png

问题

1.1扩展性问题

1>. 如果要增加一个新的扩展类型:智能手机,则要在每个品牌下增加一个新类

2>. 如果要新增加一个品牌,则这个品牌下要增加各个类型的电脑

1.2违反单一职责原则

一个类有两个引起该类变化的因素。

2.桥接模式实现

2.1场景分析

   商城系统中常见的商品分类,以电脑为类,如何良好的处理商品分类销售的问题?

   这个场景中有两个变化的维度:电脑类型、电脑品牌 这个场景中有两个变化的维度:电脑类型、电脑品牌

image.png

2.2桥接模式核心要点:

 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。

image.png

3.代码实现

品牌类

/**
 * 品牌
 * @author Administrator
 *
 */
public interface Brand {
  void sale();
}
class Lenovo implements Brand {
  @Override
  public void sale() {
    System.out.println("销售联想电脑");
  }
}
class Dell implements Brand {
  @Override
  public void sale() {
    System.out.println("销售Dell电脑");
  }
}
class Shenzhou implements Brand {
  @Override
  public void sale() {
    System.out.println("销售神舟电脑");
  }
}

电脑维度,也就是桥接类

/**
 * 电脑类型的维度
 * @author Administrator
 *
 */
public class Computer2 {
  protected Brand brand;
  public Computer2(Brand b) {
    this.brand = b;
  }
  public void sale(){
    brand.sale();
  }
}
class Desktop2 extends Computer2 {
  public Desktop2(Brand b) {
    super(b);
  }
  @Override
  public void sale() {
    super.sale();
    System.out.println("销售台式机");
  }
}
class Laptop2 extends Computer2 {
  public Laptop2(Brand b) {
    super(b);
  }
  @Override
  public void sale() {
    super.sale();
    System.out.println("销售笔记本");
  }
}

测试类

public class Client {
  public static void main(String[] args) {
    //销售联想的笔记本电脑
    Computer2  c = new Laptop2(new Lenovo());
    c.sale();
    //销售神舟的台式机
    Computer2 c2 = new Desktop2(new Shenzhou());
    c2.sale();
  }
}

4.桥接模式总结

   桥接模式可以取代多层继承的方案。 多层继承违背了单一职责原则,复用性较差,类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。

   桥接模式极大的提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。

image.png


相关文章
|
6月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Bridge(桥接模式)
【设计模式】JAVA Design Patterns——Bridge(桥接模式)
【设计模式】JAVA Design Patterns——Bridge(桥接模式)
|
6月前
|
设计模式 Java 开发者
Java设计模式【七】:桥接模式
Java设计模式【七】:桥接模式
43 0
|
2月前
|
设计模式 Java
Java设计模式-桥接模式(9)
Java设计模式-桥接模式(9)
|
1月前
|
设计模式 Java
Java设计模式之桥接模式
这篇文章介绍了Java设计模式中的桥接模式,包括桥接模式的目的、实现方式,并通过具体代码示例展示了如何分离抽象与实现,使得两者可以独立变化。
42 0
|
3月前
|
设计模式 XML 存储
【七】设计模式~~~结构型模式~~~桥接模式(Java)
文章详细介绍了桥接模式(Bridge Pattern),这是一种对象结构型模式,用于将抽象部分与实现部分分离,使它们可以独立地变化。通过实际的软件开发案例,如跨平台视频播放器的设计,文章阐述了桥接模式的动机、定义、结构、优点、缺点以及适用场景,并提供了完整的代码实现和测试结果。桥接模式适用于存在两个独立变化维度的系统,可以提高系统的可扩展性和灵活性。
【七】设计模式~~~结构型模式~~~桥接模式(Java)
|
5月前
|
设计模式 Java 数据库
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
|
5月前
|
设计模式 Java
Java设计模式之桥接模式详解
Java设计模式之桥接模式详解
|
6月前
|
设计模式 Java
23种设计模式,桥接模式的概念优缺点以及JAVA代码举例
【4月更文挑战第5天】桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其实现部分分离,使它们可以独立变化。这种模式通过创建一个桥接实现接口,把抽象和实现放在两个不同的类层次中,使两者可以独立地改变
68 4
|
6月前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~结构型]处理多维度变化——桥接模式
[设计模式Java实现附plantuml源码~结构型]处理多维度变化——桥接模式
|
6月前
|
设计模式 Java 关系型数据库
聊聊Java设计模式-桥接模式
桥接(Bridge)模式是指将抽象部分与实现部分相分离,使它们都可以独立的发生变化。
82 7
聊聊Java设计模式-桥接模式