简而言之 10 种常见的软件架构模式

2023-11-01

有没有想过如何设计大型企业级系统?在开始主要软件开发之前,我们必须选择一个合适的架构,为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该了解不同的架构。

什么是架构模式?

根据维基百科,

一个建筑模式是针对给定上下文中软件架构中常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。

在本文中,我将简要解释以下 10 种常见的架构模式及其用法、优缺点。

  1. 分层图案
  2. 客户端-服务器模式
  3. 主从模式
  4. 管道过滤器模式
  5. 经纪人模式
  6. 对等模式
  7. 事件总线模式
  8. 模型-视图-控制器模式
  9. 黑板图案
  10. 解释器模式

1.分层图案

此模式可用于构建可分解​​为子任务组的程序,每个子任务都处于特定的抽象级别。每一层都为下一个更高层提供服务。

最常见的通用信息系统的 4 层如下所示。

  • 表示层(也称为UI 层
  • 应用层(也称为服务层
  • 业务逻辑层(也称为领域层
  • 数据访问层(也称为持久层

用法

  • 一般桌面应用程序。
  • 电子商务网络应用程序。

分层图案

2.客户端-服务器模式

这种模式由两方组成;一个服务器和多个客户端。服务器组件将为多个客户端组件提供服务。客户端向服务器请求服务,服务器为这些客户端提供相关服务。此外,服务器继续侦听客户端请求。

用法

  • 在线应用程序,例如电子邮件、文档共享和银行业务。

客户端-服务器模式

3.主从模式

这种模式由两方组成;主人奴隶。主组件在相同的从组件之间分配工作,并根据从组件返回的结果计算最终结果。

用法

  • 在数据库复制中,主库被视为权威源,从库与之同步。
  • 连接到计算机系统中总线的外围设备(主驱动器和从驱动器)。

主从模式

4. 管道过滤器模式

此模式可用于构建生成和处理数据流的系统。每个处理步骤都包含在一个过滤器组件中。要处理的数据通过管道传递。这些管道可用于缓冲或同步目的。

用法

  • 编译器。连续的过滤器执行词法分析、解析、语义分析和代码生成。
  • 生物信息学的工作流程。

管道过滤器模式

5.经纪人模式

此模式用于构建具有解耦组件的分布式系统。这些组件可以通过远程服务调用相互交互。代理组件负责协调组件之间的通信。

服务器将其功能(服务和特征)发布到代理。客户端向代理请求服务,然后代理将客户端从其注册中心重定向到合适的服务。

用法

经纪人模式

6.点对点模式

在此模式中,各个组件称为对等。对等点既可以作为客户端,向其他对等点请求服务,也可以作为服务器,向其他对等点提供服务。对等点可以充当客户端或服务器或两者兼而有之,并且它可以随时间动态地改变其角色。

用法

对等模式

7. 事件总线模式

该模式主要处理事件,有 4 个主要组件;事件源事件监听器通道事件总线。源将消息发布到事件总线上的特定通道。听众订阅特定频道。侦听器会收到发布到他们之前订阅的频道的消息的通知。

用法

  • 安卓开发
  • 通知服务

事件总线模式

8. 模型-视图-控制器模式

这种模式,也称为 MVC 模式,将交互式应用程序分为 3 个部分:

  1. 模型——包含核心功能和数据
  2. view — 向用户显示信息(可以定义多个视图)
  3. 控制器——处理来自用户的输入

这样做是为了将信息的内部表示与向用户呈现和接受信息的方式分开。它解耦了组件并允许有效的代码重用。

用法

  • 主要编程语言的万维网应用程序架构。
  • Web 框架,例如DjangoRails

模型-视图-控制器模式

9.黑板图案

这种模式对于没有确定性解决方案策略已知的问题很有用。黑板图案由 3 个主要部分组成。

  • blackboard — 一个结构化的全局内存,包含来自解决方案空间的对象
  • 知识源——具有自己表示的专门模块
  • 控制组件——选择、配置和执行模块。

所有组件都可以访问黑板。组件可能会产生添加到黑板上的新数据对象。组件在黑板上寻找特定种类的数据,并可能通过与现有知识源的模式匹配来找到这些数据。

用法

  • 语音识别
  • 车辆识别和跟踪
  • 蛋白质结构鉴定
  • 声纳信号解释。

黑板图案

10.解释器模式

此模式用于设计解释以专用语言编写的程序的组件。它主要指定如何评估程序行,即以特定语言编写的句子或表达式。基本思想是为语言的每个符号设置一个类。

用法

  • 数据库查询语言,例如 SQL。
  • 用于描述通信协议的语言。

解释器模式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简而言之 10 种常见的软件架构模式 的相关文章

  • Nexus5596交换机支持3层需要的子卡

    3层子卡 nexus5596如果没有这块子卡 无法支持3层特性 TEST Cisco N5596 1 show modu Mod Ports Module Type Model Status 1 48 O2 32X10GBase T 16X
  • 实时获取建材网商品数据:API实现详解与代码示例

    一 引言 随着电子商务的快速发展 实时获取商品数据对于企业决策 市场分析以及数据驱动的营销策略至关重要 建材网作为国内知名的建材信息平台 提供了API接口 使得第三方开发者可以方便地获取商品数据 本文将详细介绍如何使用 建材网的API接口
  • 服务器超线程的好处

    服务器超线程的好处 1 提高性能 超线程通过提高整体系统吞吐量显着提高服务器性能 通过允许多个线程在单个物理内核上同时执行 超线程减少了空闲时间并最大限度地利用了可用资源 这会加快任务执行速度并缩短应用程序的响应时间 尤其是在多线程工作负载
  • 网络基础面试题(二)

    11 什么是网桥 防火墙的端口防护是指什么 网桥是一种网络设备 用于连接两个或多个局域网 LAN 并转发数据包 它能够根据MAC地址来识别和转发数据 提高网络的传输效率和安全性 防火墙的端口防护是指对防火墙上的各个端口进行保护和限制 只允许
  • 虚拟主机操作系统 Windows、Linux

    操作系统将直接影响服务器的性能 安全性和可用性 因此确保选择合适的操作系统对于成功运行您的网站或应用程序至关重要 以下是一些考虑因素 可帮助您选择适合您需求的虚拟主机操作系统 1 熟悉度和技术支持 如何选择操作系统应该考虑您的经验水平和熟悉
  • 6类典型场景的无线AP选型和部署方案

    你们好 我的网工朋友 前段时间刚给你们来了篇解决无线频繁断网的技术文 解决无线频繁断网 这个办法值得收藏 不少朋友私聊 说想再聊聊无线AP的选型和部署方案 这不就安排上了 无线网络覆盖项目中 无线AP的合理选型和部署非常重要 在设计施工中
  • 服务器超线程的好处

    服务器超线程的好处 1 提高性能 超线程通过提高整体系统吞吐量显着提高服务器性能 通过允许多个线程在单个物理内核上同时执行 超线程减少了空闲时间并最大限度地利用了可用资源 这会加快任务执行速度并缩短应用程序的响应时间 尤其是在多线程工作负载
  • DreadHunger恐惧饥荒海上狼人杀服务器搭建架设教程windows系统

    DreadHunger 恐惧饥荒海上狼人杀服务器搭建架设教程windows系统 大家好我是艾西 在11月底我有发文 DreadHunger 恐惧饥荒海上狼人杀官方停服的消息 当时在官方的公告模版中公布了在2024年一月一日会将服务端公开让喜
  • Linux 系统日志及其归档

    主要记录Linux 系统需要关注的日志文件 以及日志归档服务 rsyslogd 系统日志服务 rsyslogd 日志服务 rsyslogd reliable and extended syslogd 可靠 可扩展的系统日志服务 Rsyslo
  • CTF之逆向入门

    逆向工程 Reverse Engineering 又称反向工程 是一种技术过程 即对一项目标产品进行逆向分析及研究 从而演绎并得出该产品的处理流程 组织结构 功能性能规格等设计要素 以制作出功能相近 但又不完全一样的产品 逆向工程源于商业及
  • 【镜像压缩】linux 上 SD/TF 卡镜像文件压缩到实际大小的简单方法(树莓派、nvidia jetson)

    文章目录 1 备份 SD TF 卡为镜像文件 2 压缩镜像文件 2 1 多分区镜像文件的压缩 树莓派 普通 linux 系统等 2 2 单分区镜像文件的压缩 Nvidia Jetson Nano 等 3 还原镜像文件到 SD TF 卡
  • nohup - 后台执行

    nohup no hang up 语法 nohup Command Arg 使用示例 nohup python a py 日志将被保留在 当前文件夹下的 nohup out 将日志放到文件 不输出到终端 echo hello gt 1 tx
  • 如何解决Mybatis-plus与Mybatis不兼容的问题:An attempt was made to call a method that does not exist. The attempt

    博主猫头虎的技术世界 欢迎来到 猫头虎的博客 探索技术的无限可能 专栏链接 精选专栏 面试题大全 面试准备的宝典 IDEA开发秘籍 提升你的IDEA技能 100天精通Golang Go语言学习之旅 领域矩阵 猫头虎技术领域矩阵 深入探索各技
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • messages,CentOS 7不收集日志或不存在 /var/log/messages

    var log message var log secure等都不记录了 并且都是空文件 重启机器 reboot 无效 重启日志 systemctl start rsyslog 无效 怀疑空间不足 删除 var log messages 重
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 一台java服务器可以跑多少个线程?

    一台java服务器可以跑多少个线程 一台java服务器能跑多少个线程 这个问题来自一次线上报警如下图 超过了我们的配置阈值 打出jstack文件 通过IBM Thread and Monitor Dump Analyzer for Java
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 2023下半年软考「单独划线」合格标准公布

    中国计算机技术职业资格网发布了 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告 2023下半年软考单独划线地区合格标准各科目均为42分 01 官方通告 关于2023年度下半年计算机软件资格考试单独划线地区合格标准的通告
  • 网工内推 | 上市公司同程、科达,五险一金,年终奖,最高12k*15薪

    01 同程旅行 招聘岗位 网络工程师 职责描述 1 负责职场 门店网络规划 建设 维护 2 负责网络安全及访问控制 上网行为管理和VPN设备的日常运维 3 负责内部相关网络自动化和系统化建设 4 优化与提升网络运行质量 制定应急预案 人员培

随机推荐

  • Open3D (C++) 计算距离最大的点

    目录 一 概述 二 代码实现 三 结果展示 一 概述 给定一个点 求距离该点最远的点 二 代码实现 include
  • 2018年数学建模国赛A题题目、解题思路、matlab代码(四)

    题目 消防和金属冶金等行业常常需要工作人员在高温环境中作业 高温作业专用服装可以较好地吸收部分热量 使得工作人员体表温度不至于过高从而避免灼伤 所以高温作业服必不可少 通常作业服由三层材料构成 记为 I II III 层 其中 I 层与外界
  • vue2自定义插件

    1 新建插件文件夹 plugin 新建文件 index js index vue index vue
  • 8款让你轻松写出优秀年中总结的神器!

    又到年中总结的时候了 不知道怎么写总结呢 今天就给大家推荐8款写作神器 第一款 ChatGPT ChatGPT是由OpenAI创建的基于人工智能自然语言处理技术的系统 旨在进行自然流畅的对话并提供连贯且相关的回复 ChatGPT使用了GPT
  • 夜深人静学32系列16——RTC实时时钟

    RTC时钟 RTC 什么是RTC RTC结构框图 CubeMX配置 RTC代码配置 实战 简易时钟 任务要求 代码实现 实验结果 补充 唤醒功能配置 代码如下 RTC 什么是RTC RTC Real Time Clock 实时时钟 RTC是
  • Jmeter性能测试(性能测试,Jmeter使用与结果分析)

    每天进步一点点 关注我哦 每天分享测试技术文章 前言 一 性能测试 1 什么是性能测试 2 性能测试的重要性 3 性能指标 QPS和TPS QPS TPS 二 压测工具Jmeter 1 什么是Jmeter 2 Jmeter主要元件 3 下载
  • Cloudflare Worker 部署纯静态网站

    安装 Wrangler CLI npm i cloudflare wrangler g 或者 cargo install wrangler 创建一个空白网站模板 wrangler generate proj site ref 文档 http
  • element-plus 按钮在一些浏览器中无法显示问题

    正常按钮样式 在360浏览器或者chrome 88以下版本浏览器中的按钮样式 分析 not 选择器的写法不兼容 not a b 这种伪类不支持 解决方案 postcss selector not 插件文档地址 postcss一个插件 用来将
  • Altium Designer(AD)常用操作和快捷方式

    方格与格点的切换 View Grids ToggleVisible Grid Kind 原点 Edit Origin Set 边界的定义 Keep Out Layer Utility Tools Place Line 按TAB可定义线宽 选
  • 苹果连不上电脑服务器未响应,苹果电脑服务器未响应怎么办

    苹果Mac应用无响应 死机了怎么办 这里我们根据系统的优先级提供了多种关闭应用预防死机的方式 请大家按照苹果关闭应用的优先级方式 逐级使用关闭应用的释放防止死机 下面和学习啦小编一起来学习一下苹果电脑服务器未响应怎么办 苹果电脑未响应的解决
  • ModuleNotFoundError: No module named ‘sklearn‘【有效】

    ModuleNotFoundError No module named sklearn 有效 题目描述 解题思路一 题目描述 Traceback most recent call last File import sklearn Modul
  • es聚合结果返回所有字段

    使用topHit aggregation size 0 query match all aggregations questionAgg terms field faqQuestion size 100 aggregations faqFe
  • 实战分享:GNSS知识汇总

    大家好 我是阿荣 感恩遇见 本文部分图文来源于网络 并经过整合 编辑和勘误 实战分享栏目将重点介绍嵌入式的基础知识 并融合一些实战经验 持续勘误和迭代 建议关注和收藏 WX同名 导行定位在嵌入式解决方案中是个常客 借助其功能 产生了许许多多
  • C程序设计--VC++6.0的使用(常用快捷键)

    VC 默认没有设置打开 关闭工作区和打开 关闭输出区的快捷键 我们可以自己注册 注册方法 Tools gt Customize gt KeyBoard 编辑常用键 Ctrl N New新建工程 Ctrl O Open打开文件 Alt F3
  • Web攻击常见攻击方式及防范方案

    Web攻击 WebAttack 是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码 修改网站权限 获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要组成部分确保Web应用程序安全十分重要 即使是代码中
  • Flutter 弹性布局的基石: flex 和 flexible

    Flutter 弹性布局的基石 是 flex 和 flexible 理解了这两个 widget 后面的row column 就都轻而易举了 本文用示例的方式详细介绍 flex 的布局算法 flex 布局算法 先布局 flex 为 0 或 n
  • 打开网址自动跳转 php,HTML网页自动跳转的5种方法

    推荐教程 html教程 在我们进行网站创建时经常会遇到需要进行网页跳转的情况 本文就来为大家介绍五种网页自动跳转的方法 有一定的参考价值 有需要的朋友可以参考一下 希望对大家有所帮助 网页自动跳转5种方法 第一种网页自动跳转方法 meta
  • tomcat关闭时未防止内存泄漏,JDBC强制注销及线程未停止警告,附项目启动时初始化druid物理连接

    08 Nov 2019 22 37 57 028 警告 localhost startStop 2 org apache catalina loader WebappClassLoaderBase clearReferencesJdbc T
  • DEM比例尺和分辨率对照

    1 100万DEM 1000m空间分辨率 1 25万DEM 100m空间分辨率 1 10万DEM 50m空间分辨率 1 5万DEM 25m空间分辨率 1 1万DEM 5m空间分辨率 常见比比例尺 等高距和DEM分辨率关系如下表所示 比例尺
  • 简而言之 10 种常见的软件架构模式

    有没有想过如何设计大型企业级系统 在开始主要软件开发之前 我们必须选择一个合适的架构 为我们提供所需的功能和质量属性 因此 在将它们应用到我们的设计之前 我们应该了解不同的架构 什么是架构模式 根据维基百科 一个建筑模式是针对给定上下文中软