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();

   }

}

总结

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

相关文章
|
12小时前
|
设计模式 Java
设计模式在Java项目中的实际应用
设计模式在Java项目中的实际应用
|
1天前
|
设计模式 JavaScript
js设计模式【详解】—— 桥接模式
js设计模式【详解】—— 桥接模式
15 6
|
1天前
|
设计模式 安全 Java
从零开始:Java开发者的设计模式指南
从零开始:Java开发者的设计模式指南
|
2天前
|
设计模式 缓存 算法
编写高效的Java工具类:实用技巧与设计模式
编写高效的Java工具类:实用技巧与设计模式
|
2天前
|
设计模式 Java
设计模式在Java项目中的实际应用
设计模式在Java项目中的实际应用
|
2天前
|
设计模式 Java 容器
Java多线程编程中的设计模式与挑战
Java多线程编程中的设计模式与挑战
|
4天前
|
设计模式 缓存 安全
Java设计模式的单例模式应用场景
Java设计模式的单例模式应用场景
18 4
|
4天前
|
设计模式 监控 安全
设计模式之代理模式(Java)
设计模式之代理模式(Java)
|
4天前
|
设计模式 Java 中间件
深入探索Java设计模式:责任链模式解析与实践
深入探索Java设计模式:责任链模式解析与实践
6 0
|
4天前
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)