当前位置: 首页 > 科技观察

架构设计中常用的10种设计模式,你知道吗?

时间:2023-03-17 12:58:39 科技观察

企业级软件系统如何设计?在我们开始编写代码之前,我们需要选择一个合适的架构来确定软件实现的功能和质量属性。因此,了解软件设计中不同的架构模式,对我们的软件设计会有很大的帮助。软件架构模式什么是架构模式?根据维基百科:架构模式是针对特定软件架构场景中常见问题的通用、可重用的解决方案。架构模式类似于软件设计模式,但范围更广。本文将简要介绍10种常见的架构模式,以及它们的用法和优缺点。分层模式Client-serverpatternMaster-slavepatternPipe-filterpatternBrokerpatternPeer-to-peerpattern-peerpattern)事件总线模式(Event-buspattern)模型-视图-控制器模式(Model-view-controllerpattern)黑板模式(Blackboardpattern)解释器模式(Interpreterpattern)1.层次模式该模式使用基于结构化的程序,可以分解为子任务,每个子任务处于特定的抽象层次,每一层都为上一层提供服务.通用信息系统的四个最常见级别如下。表示层(也称UI层)应用层(也称服务层)业务逻辑层(也称领域层)数据访问层(也称持久层)应用场景:通用桌面应用程序电子商务Web应用程序通用移动应用程序2。客户端-服务器模式这种模式由两部分组成:服务器和多个客户端。一个服务器会为多个客户端提供服务。客户端向服务器请求服务,服务器向这些客户端提供相关服务。此外,服务器会继续侦听客户端请求。应用场景:电子邮件、文档共享、银行等在线应用。基于IPC的应用3.主从模式这种模式由两部分组成:主节点和从节点。主节点将工作分配给相同的从节点,并根据从节点返回的结果计算最终结果。应用场景:在数据库复制中,主库作为权威源库,从库与之同步。通过总线连接到计算机系统(主驱动器和从驱动器)的外围设备。进程内多线程应用程序。4.管道过滤器模式这种模式可用于构建生成和处理数据流的系统。每个处理步骤都包含一个过滤器组件。要处理的数据通过管道传递。这些管道可用于缓冲或同步目的。应用场景:编译器。连续过滤器执行词法分析、词法分析、语义分析和代码生成。生物信息学工具链式应用程序的工作流程5.Agent模式该模式通过组件解耦构建分布式系统。这些组件可以通过远程服务调用相互交互。代理组件负责协调组件之间的通信。服务器向代理发布功能(服务和特征)。客户端向代理请求服务,代理将客户端重定向到适当的服务。需要注意broker、agent、proxy和delegate的区别。应用场景:消息代理软件,如:ApacheActiveMQ、ApacheKafka、RabbitMQ和JBossmessaging。网络传输中的代理软件。6.P2P模式在这种模式下,每个组件称为对等节点。对等节点既可以充当客户端(向其他对等点请求服务),也可以充当服务器(向其他对等点提供服务)。对等节点可以充当单个客户端、服务器或两者,并且可以随时间动态改变角色。使用场景:Gnutella、G2等文件共享网络,P2PTV、PDTP等多媒体协议。7.Event-bus模式这种模式也叫订阅-发布模式,主要处理事件,有四个主要组成部分:事件源、事件监听器、通道和事件总线。事件源将消息发布到事件总线上的特定通道,而侦听器则订阅特定通道。消息发布到监听者之前订阅的频道,监听者会收到消息的通知。使用场景:Android开发通知服务注册中心8.Model-View-Controller模式这种模式也称为MVC模式,将一个交互应用分为三部分:Model-包含核心功能和数据视图-向用户显示信息(多个可以定义视图)控制器-处理来自用户的输入这样做是为了分离信息的内部表示、信息呈现给用户的方式以及接受用户输入的方式。这种模式解耦组件并允许高效的代码重用。应用场景:通用web应用架构Django、Rails等web框架通用GUI应用9.黑板模式这种模式对于没有确定解决策略的问题非常有用。黑板模式由三个主要部分组成:黑板:结构化的全局内存,包含来自解决方案空间的对象知识源:具有自己表示的专门模块控制组件:模块的选择、配置和执行所有组件都可以到达黑板。组件可以生成添加到板上的新数据对象。组件在黑板上寻找特定类型的数据,并通过与现有知识源进行模式匹配来找到这些数据。应用场景:语音识别车辆识别与跟踪蛋白质结构识别声纳信号解读10.解释器模式该模式用于设计解释特殊语言的程序组件。它基本上指定了如何评估程序的每一行,即用特定语言编写的句子或表达式。基本思想是语言的每个符号都有一个类。应用场景:数据库查询语言,如SQL。一种用于描述通信协议的语言。