Java设计模式-桥接模式(9)

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

大家好,我是馆长!今天开始我们讲的是结构型模式中的桥接模式。老规矩,讲解之前再次熟悉下结构型模式包含:代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式,共7种设计模式。

桥接模式(Bridge Pattern)

定义

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(interface)模式。

解决问题

在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。

实现

可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。

结构

主要角色如下:

1.抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。

2.扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。可以是抽象类的子类或具体实现类。

3.实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。

4.具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现。

注意:

1、抽象化角色是抽象类(abstract class),包含实现化引用。

2、对于两个独立变化的维度或者多维度的变化,使用桥接模式再适合不过了。

优点:

由于抽象与实现分离,所以扩展能力强。

其实现细节对客户透明。

缺点:

由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。
AI 代码解读

适用场景:

1、当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时。

2、当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。

3、当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。

代码实现:

//抽象化角色:Shape
@Data
public abstract class Shape {
protected Color color;

Shape() {}

Shape(Color color) {
    this.color = color;
}

//绘制图形
abstract void draw();
AI 代码解读

}
//扩展抽象化角色:Circular
@Data
public class Circular extends Shape {

Circular(Color color) {
    super(color);
}

@Override
void draw() {
    System.out.println("绘制圆形:");
    color.fill();
}
AI 代码解读

}

​​​​​​
//扩展抽象化角色:Circular
@Data
public class Rectangle extends Shape {

Rectangle(Color color) {
    super(color);
}

@Override
public void draw() {
    System.out.println("绘制矩形:");
    color.fill();
}
AI 代码解读

}

​​​​​​
//实现抽象类:颜色填充 Color
public interface Color {
void fill();
}

​​​​​​
//具体实现化角色:RedColor
@Data
public class RedColor implements Color {
@Override
public void fill() {
System.out.println("填充了红色");
}
}

//具体实现化角色:RedColor
@Data
public class BlueColor implements Color {
@Override
public void fill() {
System.out.println("填充了蓝色");
}
}

//模拟客户端
public class ClientDemo {
public static void main(String[] args) {
Shape circularRed = new Circular(new RedColor());
circularRed.draw();
Shape circularBlue = new Circular(new BlueColor());
circularBlue.draw();
Shape rectangleRed = new Rectangle(new RedColor());
rectangleRed.draw();
Shape rectangleBlue = new Rectangle(new BlueColor());
rectangleBlue.draw();
}
}
扩展:

在软件开发中,有时桥接(Bridge)模式可与适配器模式联合使用。当桥接(Bridge)模式的实现化角色的接口与现有类的接口不一致时,可以在二者中间定义一个适配器将二者连接起来,

好了,关于桥接模式的说明,馆长就先讲到这里。谢谢各位看官!!

23 种设计模式不是孤立存在的,很多模式之间存在一定的关联关系,在大的系统开发中常常同时使用多种设计模式,或者模式与模式之间的组合进行生成更加强大的程序功能。

目录
打赏
0
1
1
0
46
分享
相关文章
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
66 0
【设计模式】【结构型模式】桥接模式(Bridge)
一、入门 什么是桥接模式? 桥接模式(Bridge Pattern)是一种结构型设计模式,核心思想是将抽象与实现分离,让它们可以独立变化。简单来说,它像一座“桥”连接了两个维度的变化,避免用继承导致代
166 10
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
「全网最细 + 实战源码案例」设计模式——桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,通过将抽象部分与实现部分分离,使它们可以独立变化,从而降低代码耦合度,避免类爆炸,提高可扩展性。其结构包括实现类接口、具体实现类、抽象类和精确抽象类。适用于多维度扩展类、隐藏实现细节、简化庞杂类以及运行时切换实现方法的场景。优点包括高扩展性、隐藏实现细节、遵循开闭原则和单一职责原则;缺点是可能增加代码复杂度。示例中展示了不同操作系统播放不同格式视频文件的实现。
133 19
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
134 6
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
109 4
PHP中的设计模式:桥接模式的解析与应用
在软件开发的浩瀚海洋中,设计模式如同灯塔一般,为开发者们指引方向。本文将深入探讨PHP中的一种重要设计模式——桥接模式。桥接模式巧妙地将抽象与实现分离,通过封装一个抽象的接口,使得实现和抽象可以独立变化。本文将阐述桥接模式的定义、结构、优缺点及其应用场景,并通过具体的PHP示例代码展示如何在实际项目中灵活运用这一设计模式。让我们一起走进桥接模式的世界,感受它的魅力所在。
Java设计模式梳理:行为型模式(策略,观察者等)
本文详细介绍了Java设计模式中的行为型模式,包括策略模式、观察者模式、责任链模式、模板方法模式和状态模式。通过具体示例代码,深入浅出地讲解了每种模式的应用场景与实现方式。例如,策略模式通过定义一系列算法让客户端在运行时选择所需算法;观察者模式则让多个观察者对象同时监听某一个主题对象,实现松耦合的消息传递机制。此外,还探讨了这些模式与实际开发中的联系,帮助读者更好地理解和应用设计模式,提升代码质量。
Java设计模式梳理:行为型模式(策略,观察者等)
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
299 0
Java设计模式-备忘录模式(23)
Java设计模式-备忘录模式(23)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问