当前位置: 首页 > news >正文

代码设计:设计模式:中介者模式

文章目录

    • 类结构
    • 代码实例
    • 以中介者模式为基础的设计模式
    • 总结

类结构

类A->类Mediator->类B, ->代表依赖

Mediator作为中介者

1.间接实现的A调用B的方法

2.实现A与B的松耦合,B的代码变化尽量不影响A的代码

代码实例

类A

public class A {private Mediator mediator;public A(Mediator mediator) {this.mediator = mediator;}public void method() {mediator.method();}}

类Mediator

public class Mediator {private B b;public Mediator(B b) {this.b = b;}public void method() {b.method();}
}

类B


public class B {public void method() {... ...}}

使用代码

B b = new B();
Mediator mediator = new Mediator(b);
A a = new A(mediator);a.method();//实际上通过中介者,调用b的method()方法

以中介者模式为基础的设计模式

适配器模式

Adapter作为中介者,负责复用旧代码,完成新功能

装饰器模式

装饰器作为中介者,负责扩展旧的功能,在旧的功能的基础上添加新的代码

代理模式

代理器作为中介者,负责对旧功能是否能实现进行条件筛选

观察者模式

被观察者->观察器->观察者

观察器作为中介者,负责传递,把数据或事件从被观察者传递到观察者

外观模式

A->外观->各种子系统

外观和子系统是一对多的依赖关系,一个外观包含多个子系统

外观作为中介者,负责隐藏实现细节,对外所有功能都是外观类实现的,实际上内部是不同的子系统实现的

总结

作为中介者

1.间接实现的A调用B的方法

2.实现A与B的松耦合,B的代码变化尽量不影响A的代码

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • idea鼠标悬浮显示注释
  • Table API SQL的概念和通用API
  • 具有重新参数化异构卷积的多分支辅助融合YOLO,用于精确的目标检测(MAF-YOLO)
  • Spring——IOC/DI思想
  • 打造编程学习的“知识宝库”:解锁高效笔记记录与整理的秘籍
  • 刷到好听的音频怎么办
  • 在react vue 项目中,打包后由于文件名的变化导致点击旧页面时 JS 和 CSS 文件出现 404 错误。
  • Cesium.js:webGIS领域的翘楚,开源全球地理空间数据可视化框架.
  • CVAE条件生成原理推导
  • vs2022 x64 C/C++和汇编混编 遇到的坑
  • VS2022快速搭建OLLVM
  • 操作系统内存管理技术详解
  • 深入解析 Golang debug/macho 包:解锁 Mach-O 文件的秘籍
  • RPA财务机器人是什么,RPA的具体应用场景有哪些?| 实在RPA研究
  • 量化-均线回归策略
  • “大数据应用场景”之隔壁老王(连载四)
  • 4. 路由到控制器 - Laravel从零开始教程
  • css的样式优先级
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Markdown 语法简单说明
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • React中的“虫洞”——Context
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Vue 重置组件到初始状态
  • vue:响应原理
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 第2章 网络文档
  • 解析 Webpack中import、require、按需加载的执行过程
  • 理解在java “”i=i++;”所发生的事情
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 使用Swoole加速Laravel(正式环境中)
  • 硬币翻转问题,区间操作
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • # wps必须要登录激活才能使用吗?
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (1) caustics\
  • (8)STL算法之替换
  • (C语言)fgets与fputs函数详解
  • (done) 两个矩阵 “相似” 是什么意思?
  • (二)c52学习之旅-简单了解单片机
  • (二)windows配置JDK环境
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转载)从 Java 代码到 Java 堆
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .Net 基于MiniExcel的导入功能接口示例
  • ::
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [012-1].第12节:Mysql的配置文件的使用