Java设计模式-桥接模式(Bridge Pattern)

简介: Java设计模式-桥接模式(Bridge Pattern)

文章目录

一、桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。

意图: 将抽象部分与实现部分分离,使它们都可以独立的变化。

主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。

何时使用: 实现系统可能有多个角度分类,每一种角度都可能变化。

如何解决: 把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。

关键代码: 抽象类依赖实现类。

二、代码示例

模拟两个A,B公司生产和销售产品。


a4e26f1ae5da451caa4028227c417c0d.png

1.创建桥接实现接口

产品接口

/**

* 提供一个接口,提供两个接口,生产和销售方法

*/

public interface Product {

   void produce();

   void sell();

}

2.创建接口实现类

A产品

public class AProduct implements Product{

   @Override

   public void produce() {

       System.out.println("生产产品A......");

   }

   @Override

   public void sell() {

       System.out.println("销售产品A......");

   }

}

B产品

/**

* 生产B产品

*/

public class BProduct implements Product{

   @Override

   public void produce() {

       System.out.println("生产B产品......");

   }

   @Override

   public void sell() {

       System.out.println("销售B产品......");

   }

}

3 使用接口创建抽象类

 

/**

* 接口抽象类

*/

public abstract class Company {

   protected Product product;

   protected Company(Product product){

       this.product = product;

   }

   /**

    * 提供一个抽象方法

    */

   public abstract void produce();

}

4 抽象实现类

A公司

/**

* A公司

*/

public class ACompany extends Company {

   protected ACompany(Product product) {

       super(product);

   }

   @Override

   public void produce() {

      product.produce();

   }

}

B公司

/**

* B公司

*/

public class BCompany extends Company {

   protected BCompany(Product product) {

       super(product);

   }

   @Override

   public void produce() {

       product.produce();

   }

}

5 测试

 

public class Client {

   public static void main(String[] args) {

       AProduct a = new AProduct();

       Company acompany = new ACompany(a);

       acompany.produce();

       BProduct b = new BProduct();

       Company bcompany = new BCompany(b);

       bcompany.produce();

   }

}

总结

业务抽象和业务实现,实现类间的类间解耦。

相关文章
|
4天前
|
设计模式 开发者
【设计模式】第七篇:和我一起简单认识桥接模式
实现的意思并不是指抽象的派生类,而是指通过组合来代替继承关系,从而降低抽象和具体实现产品两个可变换维度之间的耦合,就像我们的相机品牌和相机产品类型之间的分离
18 4
|
16天前
|
设计模式 Java 数据库连接
【重温设计模式】代理模式及其Java示例
【重温设计模式】代理模式及其Java示例
|
20天前
|
设计模式 Java API
【设计模式】JAVA Design Patterns——Combinator(功能模式)
【设计模式】JAVA Design Patterns——Combinator(功能模式)
|
14天前
|
设计模式 存储 前端开发
Java的mvc设计模式在web开发中应用
Java的mvc设计模式在web开发中应用
|
16天前
|
设计模式 安全 Java
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
该文介绍了一种C++的编程技巧——奇异递归模板模式(CRTP),旨在让派生组件能继承基本组件的特定功能。通过示例展示了如何创建一个`Fighter`接口和`MmaFighter`类,其中`MmaFighter`及其子类如`MmaBantamweightFighter`和`MmaHeavyweightFighter`强制类型安全,确保相同重量级的拳手之间才能进行比赛。这种设计避免了不同重量级拳手间的错误匹配,编译时会报错。CRTP适用于处理类型冲突、参数化类方法和限制方法只对相同类型实例生效的情况。
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
|
19天前
|
设计模式 Java 数据库
【设计模式】JAVA Design Patterns——Converter(转换器模式)
转换器模式旨在实现不同类型间的双向转换,减少样板代码。它通过通用的Converter类和特定的转换器(如UserConverter)简化实例映射。Converter类包含两个Function对象,用于不同类型的转换,同时提供列表转换方法。当需要在逻辑上对应的类型间转换,或处理DTO、DO时,此模式尤为适用。
【设计模式】JAVA Design Patterns——Converter(转换器模式)
|
19天前
|
设计模式 安全 Java
Java设计模式
Java设计模式
6 1
|
19天前
|
设计模式 Java 数据库连接
JAVA设计模式解析与实战
本文探讨了Java中的常见设计模式,包括单例模式、工厂模式和观察者模式。单例模式确保类只有一个实例,常用于管理资源;工厂模式通过抽象工厂接口创建对象,降低了耦合度;观察者模式实现了一对多的依赖关系,当主题状态改变时,所有观察者都会收到通知。理解并运用这些设计模式能提升代码的复用性、可扩展性和可维护性。
|
20天前
|
设计模式 存储 Java
【设计模式】JAVA Design Patterns——Command(事务模式)
【设计模式】JAVA Design Patterns——Command(事务模式)
|
21天前
|
设计模式 监控 Java
【设计模式】JAVA Design Patterns——Circuit Breaker(断路器模式)
【设计模式】JAVA Design Patterns——Circuit Breaker(断路器模式)