开发测试必须知道的 10种 常见软件架构模式

 

你是否想知道企业大规模系统是如何设计的?

在软件开发开始之前,我们必须选择一个合适的架构,能提供所需的功能和质量特性。因此,在将架构应用到我们的设计之前,我们应该了解各种不同架构的特点。

图片

01 什么是架构模式

根据维基百科:
架构模式是在软件架构上针对特定上下文件解决常见问题的通用、可复用的解决方案。架构模式与软件设计模式相似,但范围更广

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

  • 分层模式

  • 客户服务器模式(CS)

  • 主从模式

  • 管道过滤器模式

  • 代理模式

  • P2P模式

  • 事件总线模式

  • MVC模式

  • 黑板模式

  • 解释器模式

01 分层模式

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

信息系统中常见的四层模式如下:

  • 表示层(也称为UI层)

  • 应用层(也称服务层)

  • 业务逻辑层(也称领域层)

  • 数据访问层(也称持久化层)

用途:
  • 通用桌面应用

  • 电子商务应用

    图片

    分层模式

02 客户端服务器模式

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

用途:

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

图片

客户服务器模式

03 主从模式

这个模式由两部分组成:master 和 slaves。master组件将工作分配给相同的slave组件,并根据slave组件返回的结果计算最终结果。

用途:
  • 在数据库复制中,将主数据库视为中心负责写数据,从数据库与主数据库同步

  • 连接到计算机系统总线上的外设(主驱动器和从驱动器)

    图片

    CS模式

04 管道过滤器模式

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

用途:
  • 编译器

    连续的过滤器分别执行:词法分析、解析、语义分析和代码生成

  • 信息处理工作流

    图片

    管道过滤器模式

05 代理模式

此模式结合解耦组件构造分布式系统。这些组件可以通过远程服务调用,相互交互。代理组件负责协调组件之间的通信。服务器将其功能(服务和特征)发布到代理。客户端向代理请求服务,然后代理根据注册中心将客户端请求重定向到合适的服务。

用途:

消息代理软件,如Apache ActiveMQ、Apache Kafka、RabbitMQ、JBoss Messaging

图片

代理模式

06 P2P模式

在此模式中,单个组件称为对等组件peer。对等组件既可以作为客户端向其他对等组建请求服务,也可以作为服务器向其他对等组件提供服务。对等组建可以充当客户端或服务器,也可以同时充当两者,它可以随时间动态地更改其角色。

用途:
  • 文件共享网络比如Gnutella和G2

  • 基于加密货币的产品,如比特币和区块链

    图片

    P2P模式

07 事件总线模式

该模式主要处理事件,有4个主要组件:事件源、事件监听器、通道和事件总线。事件源将消息发布到事件总线上的特定通道。侦听器订阅特定的通道。当消息发布到它们订阅过的通道时,侦听器会得到通知。

用途:
  • 安卓开发

  • 通知服务

图片

事件总线模式

08 MVC模式

(model-view-controller)这种模式,将交互式应用程序分为3个部分:
  • 模型:包含核心功能和数据

  • 将信息显示给用户(可以定义多个视图)

  • 处理来自用户的输入

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

用途:
  • 大部分编程语言都使用的web开发架构

  • Web框架,如Django和Rails

    图片

    MVC模式

09 黑板模式

这种模式在没有确定性解决策略的问题方面很有用。黑板模式由3个主要部分组成

  • 黑板:结构化的全局内存包含解决方案对象

  • 知识源:具有自己表示形式的专用模块

  • 控制组件:选择、配置和执行模块。

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

用途:
  • 语音识别

  • 车辆识别与跟踪

  • 蛋白质结构识别

  • 声纳信号解析

    图片

    黑板模式

10 解释器模式

此模式用于设计组件,该组件用于解释专用语言编写的程序。它主要规定了如何对程序行求值,这些程序被称为用特定语言编写的句子或表达式。其基本思想是为语言的每个符号都建立一个类。

用途:
  • 数据库查询语言,如SQL

  • 用于描述通信协议的语言

    图片

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/626554.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文分享:抖音外卖城市合伙人如何申请合作?

在当今数字化时代,外卖和团购业务蓬勃发展,商家们纷纷寻求在多个平台上拓宽销售渠道,以获取更多的订单和利润,这也给创业者提供创来机会。在这其中,抖音外卖作为一股新势力,自然吸引了众多创业者的目光&…

解锁客户需求密码:银行业数据分析在业务决策中的关键作用

一、引言 在数字化和大数据时代的浪潮下,银行业正经历着前所未有的变革。作为数据分析领域的资深专家,我深知数据分析在银行业务发展中的重要性和价值。本文将从银行业数据分析的角度出发,深入探讨相关业务场景下的数据分析应用,…

斥巨资!韩国力撑芯片产业

KlipC报道:韩国为加强本国半导体产业竞争力,将推进一项超过10万亿韩元的支持计划。 大型科技公司微软、亚马逊和谷歌为了保持自己大型语言模型的竞争力,投入了大量的资金,全球对可生成AI应用的需求在不断增长,市场上对…

Vision Mamba 代码调试---Pycharm+AutoDL

《AutoDL使用手册》 1. 服务器租用与配置 先上项目链接: GitHub - hustvl/Vim: Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model 1.1 服务器租用与配置 根据环境要求,去租一个服务器:AutoDL算…

Ajax 学习

文章目录 1. 前置知识1.1 ajax 介绍1.2 XML 简介 2. AJAX 学习2.1 AJAX基础学习(1)AJAX的特点(2)AJAX 初体验(3)服务端响应json 数据 2.2 IE 缓存问题2.3 请求超时和网络异常2.4 手动取消请求2.5 重复请求2…

鸿蒙 DevEcoStudio:用户名密码获取保存

【使用首选项实现用户名密码保存获取】 打开src/main/ets/entryability路径下的EntryAbility.ts文件 在 export default class EntryAbility extends UIAbility {onCreate(want, launchParam) {hilog.info(0x0000, testTag, %{public}s, Ability onCreate);下边添加内容&…

【JVM】调优工具

这里简单介绍一下各种调优用到的工具 一,环境准备 首先我们需要准备好Java环境,和win上的jdk环境(图形化界面如jconsole只有jdk中有)。 有这样一个类Prolem,每个线程都会带来100个垃圾对象,线程new完100…

智慧公厕,提升公共厕所管理效率的信息化变革

现代社会中,公共厕所的管理成为一个不可忽视的问题。随着城市化进程的加快,人们对公厕的需求日益增加,但公厕的管理却面临诸多困难。为了解决这一问题,智慧公厕应运而生,通过信息化的变革,提高公厕的管理效…

QT函数整理

目录 1. 适应高分辨率函数 1. 适应高分辨率函数 自动适应调整设备安装QT的UI分辨率: QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 加载位置:

第四届辽宁省大学生程序设计竞赛

比赛经历:2024.5.14简单vp了一个小时只写出了签到题4个然后跑路了 补题:感觉其他题有点太抽象了主要补了一题,在区间问题中数据结构的使用 比赛链接[点我即可] 目录 A.欢迎来到辽宁省赛 B.胜率 F.隔板与水槽 H.取石子 L.区间与绝对值 …

第188题|幂级数的展开的常规方法(一)|武忠祥老师每日一题

解题思路:求幂级数有两种方法,一种是直接法,这里显然不太好求,还有一种是利用现有展开式展开,我们看到分母 可以分解因式成(x6)(x-1),进而拆解成一次式。拆解成一次式的目的是为了使用一下两个展开式。 第一步&#xf…

NARUTO 复现记录

1 环境配置 下载项目,一定要 git 下载全项目,下载完后要检查third_parities 里面的coslam和neural_slam_eval 文件全不全。 git clone --recursive https://github.com/oppo-us-research/NARUTO.git 环境配置 注意 bash scripts/installation/conda…

【哔哩哔哩下载】Bilidown,B站下载工具网站,永久免费使用NO.98

本文一共:448 个字,需要阅读:2 分钟,更新时间:2024年5 月14日,部分内容具有时效性,如有失效请留言,阅读量:0 输入B站视频网址就可以下载了 除了可以下载视频,还能获取弹幕、查看封面,如果你想解锁1080P画质,就需要扫码登录。 点击右下角的齿…

python “名称空间和作用域” 以及 “模块的导入和使用”

七、名称空间和作用域 可以简单理解为存放变量名和变量值之间绑定关系的地方。 1、名称空间 在 Python 中有各种各样的名称空间: 全局名称空间:每个程序的主要部分定义了全局的变量名和变量值的对应关系,这样就叫做全局名称空间 局部名称…

0508GoodsContent的Maven项目

0508GoodsContent的Maven项目包-CSDN博客 数据库字段 页面需求

OFDM802.11a的FPGA实现(十五)短训练序列:STS(含Matlab和verilog代码)

原文链接(相关文章合集):OFDM 802.11a的xilinx FPGA实现 1.前言 在之前已经完成了data域数据的处理,在构建整个802.11a OFDM数据帧的时候,还剩下前导码和signal域的数据帧,这两部分的内容。 PLCP的前导部分…

八年前端开发之路中遇到的一些实用技巧分享——代码思路及通用场景

在开发中比较有用的代码思路 1. 链式编程2. 高阶函数应用-(添加数据并提供删除方法)3. 利用Promise链切入(延迟执行)4. 通过中间层来解决问题(装饰者模式)5. 单例模式 1. 链式编程 所谓链式编程即是函数调用后返回对象本身 let …

LoRA Land: 310个经微调的大语言模型可媲美GPT-4

摘要 低秩自适应 (LoRA) 已成为大语言模型 (LLM) 参数有效微调 (PEFT) 中最广泛采用的方法之一。LoRA 减少了可训练参数的数量和内存使用,同时达到了与全面微调相当的性能。该研究旨在评估在实际应用中训练和服务使用 LoRA 微调的 LLM 的可行性。首先,该研究测量了在 10 个基础…

搞什么副业可以月入过万?

月入过万的副业不是一件容易的事情,它需要你付出很多努力和时间。以下是一些可能能够实现月入过万的副业 1. 自媒体运营 通过开设自己的公众号、博客或YouTube频道,积累一定的粉丝和流量,然后通过广告、赞助、商品销售等方式赚取收入。 2. …

110份财务常用excel模板(个税、采购、报销、预算),超实用!

如果你还在为报表头疼,那你一定不能错过这篇干货满满的分享! 个税报表 个人所得税,听起来就头大?别担心,掌握这些技巧,轻松搞定! - 记录员工收入,确保数据准确无误 - 计算应纳税…