设计模式(八):桥接模式

devtools/2024/10/19 7:31:45/

设计模式(八):桥接模式

  • 1. 桥接模式的介绍
  • 2. 桥接模式的类图
  • 3. 桥接模式的实现
    • 3.1 创建实现接口
    • 3.2 创建实现了 Cook 接口的实体桥接实现类
    • 3.3 使用 Cook 接口创建抽象类 Chef
    • 3.4 创建实现了 Chef 抽象类的实体类
    • 3.5 测试

1. 桥接模式的介绍

桥接模式(Bridge Pattern)属于结构型模式,是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过组合的方式,而不是继承的方式,将抽象和实现的部分连接起来。

桥接模式的四个关键角色:

  • 抽象(Abstraction):定义抽象接口,通常包含对实现接口的引用。
  • 扩展抽象(Refined Abstraction):对抽象的扩展,可以是抽象类的子类或具体实现类。
  • 实现(Implementor):定义实现接口,提供基本操作的接口。
  • 具体实现(Concrete Implementor):实现实现接口的具体类。

2. 桥接模式的类图

有一个作为桥接实现的 Cook 接口和实现了Cook 接口的实体类 ChineseCookEuropeanCookChef 是一个抽象类,将使用 Cook 的对象。
在这里插入图片描述

3. 桥接模式的实现

3.1 创建实现接口

java">package blog;/*** 实现接口*/
public interface Cook {void cook();
}

3.2 创建实现了 Cook 接口的实体桥接实现类

java">package blog;/*** 具体实现*/
public class ChineseCook implements Cook{@Overridepublic void cook() {System.out.println("中餐");}
}
java">package blog;/*** 具体实现*/
public class EuropeanCook implements Cook{@Overridepublic void cook() {System.out.println("西餐");}
}

3.3 使用 Cook 接口创建抽象类 Chef

java">package blog;/*** 抽象接口*/
public abstract class Chef {protected Cook cook;public Chef(Cook cook) {this.cook = cook;}protected abstract void cook();
}

3.4 创建实现了 Chef 抽象类的实体类

java">package blog;/*** 扩展抽象*/
public class AdvancedChef extends Chef{public AdvancedChef(Cook cook) {super(cook);}@Overrideprotected void cook() {cook.cook();}
}

3.5 测试

java">package blog;public class BridgeDemo {public static void main(String[] args) {AdvancedChef chef1 = new AdvancedChef(new ChineseCook());chef1.cook();AdvancedChef chef2 = new AdvancedChef(new EuropeanCook());chef2.cook();}
}

http://www.ppmy.cn/devtools/20675.html

相关文章

【随想录】Day35—第八章 贪心算法 part04

目录 题目1: 柠檬水找零1- 思路2- 题解⭐ 柠檬水找零 ——题解思路 题目2: 406. 根据身高重建队列1- 思路2- 题解⭐ 根据身高重建队列 ——题解思路 题目3: 用最少数量的箭引爆气球1- 思路2- 题解⭐ 用最少数量的箭引爆气球 ——题解思路 题目1: 柠檬水找零 题目链接&#xff…

基于单片机公交语音报站系统设计 含源码,Proteus仿真原理图

资料下载地址:基于单片机公交语音报站系统设计 含源码,Proteus仿真原理图 1、前言 系统的总体设计需要充分运用STC单片机作为主控控制芯片,完成主控控制电路的基本设计,辅助控制电路是语音控制电路、12864显示电路、按键控制电路、…

Pytorch 的实际应用 学习笔记

一. 模型的下载 weights为false时则为没有提前经过训练的模型,为true时则经过了提前训练 vgg16_false torchvision.models.vgg16(weightsFalse) vgg16_true torchvision.models.vgg16(weightsTrue) 打印 二. 模型的修改 (1)添加操作 …

RAG开山之作:结合参数化与非参数化记忆的知识密集型NLP任务新解法

20年RAG刚提出时的论文:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,也算是RAG的开山之作之一了。 摘要:检索增强生成(RAG)方法结合了预训练语言模型与基于检索的非参数化记忆,通过…

Flink 实时数仓(二)【ODS 层开发】

前言 最近投了不少的实习,也收到不错的反馈,虽然是中小公司偏多,但是毕竟现在这个环境双非进大厂实习可不同当年了。可惜的是学院不放人,无奈啊,遍身罗绮者,不是养蚕人。我累死累活肝了两年了,好…

cnpm安装

npm install -g cnpm --registryhttps://registry.npmmirror.com # 注册模块镜像 npm set registry https://registry.npmmirror.com // node-gyp 编译依赖的 node 源码镜像 npm set disturl https://npmmirror.com/dist // 清空缓存 npm cache clean --force // 安装c…

基于YOLOV8+Pyqt5无人机航拍太阳能电池板检测系统

1.YOLOv8的基本原理 YOLOv8是一种前沿的目标检测技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性,在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,…

【展会邀请】百华鞋业邀您参加2024山东省休闲旅游产业展!

2024山东省休闲旅游产业展将于4月25日—27日在临沂国际博览中心精彩亮相。本届展会由山东省旅游行业协会、山东省文化产业发展协会主办,山东新琅琊投资发展集团有限公司承办的2024休闲旅游产业展,将在临沂国际博览中心精彩亮相。山东百华鞋业将作为临沂户…