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

   }

}

总结

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

相关文章
|
9天前
|
存储 设计模式 安全
Java设计模式-备忘录模式(23)
Java设计模式-备忘录模式(23)
|
9天前
|
设计模式 存储 算法
Java设计模式-命令模式(16)
Java设计模式-命令模式(16)
|
9天前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
9天前
|
设计模式 自然语言处理 算法
PHP中的设计模式:桥接模式的深入探索与应用
在PHP开发中,理解并运用设计模式是提升代码质量与可维护性的关键。本文聚焦于桥接模式——一种结构型设计模式,它通过封装一个抽象的接口,将实现与抽象分离,从而使得它们可以独立变化。不同于传统摘要的概述式表述,本文将以故事化的情境引入,逐步解析桥接模式的精髓,通过PHP代码示例详细展示其在实际项目中的应用,旨在为读者提供一个既深刻又易于理解的学习体验。
12 1
|
9天前
|
设计模式 存储 缓存
Java设计模式 - 解释器模式(24)
Java设计模式 - 解释器模式(24)
|
9天前
|
设计模式 安全 Java
Java设计模式-迭代器模式(21)
Java设计模式-迭代器模式(21)
|
9天前
|
设计模式 缓存 监控
Java设计模式-责任链模式(17)
Java设计模式-责任链模式(17)
|
9天前
|
设计模式 运维 算法
Java设计模式-策略模式(15)
Java设计模式-策略模式(15)
|
9天前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
9天前
|
设计模式 缓存 算法
Java设计模式-访问者模式(22)
Java设计模式-访问者模式(22)
下一篇
无影云桌面