Garlan和Shaw在软件架构领域内提出了多种不同的架构风格,并在1996年出版的作品中进行了详细描述。这些架构风格包括“管道与过滤器(Pipes and Filters)”、“面向对象组织(Object-Oriented Organization)”、“事件驱动,隐式调用(Event-based, Implicit Invocation)”、“分层系统(Layered Systems)”、“仓库(Repositories)”以及“表格驱动解释器(Table-Driven Interpreters)”。这些架构风格分别适用于不同的场景,并且各有其优势和限制。 “管道与过滤器”架构风格中,系统被分割成一系列的处理步骤,每个步骤处理输入数据并产生输出数据,这些步骤之间通过数据流相互连接。比如Unix系统的shell命令就是此架构的一个经典例子,每个命令读取输入、处理数据并输出结果,以管道符(|)连接多个命令形成复杂的数据处理流程。 “面向对象组织”架构风格强调以对象为核心组织数据和功能。在这样的架构中,系统由对象集合构成,对象之间通过消息传递相互通信。面向对象编程语言比如Java或C++都支持这种风格,对象的封装、继承和多态是其核心特征。 “事件驱动,隐式调用”架构风格是一种响应式架构,系统对事件做出反应,而这些事件是由外部条件或者内部操作触发的。在这样的架构下,对象不需要直接调用其他对象的方法,而是通过事件总线发送事件,由监听这些事件的其他对象来接收并作出相应处理。这种风格常用于图形用户界面、游戏开发等领域。 “分层系统”架构风格则是将系统划分为不同的层次,每一层提供一组功能,并且仅能访问下一层提供的功能。每一层为其上层提供接口,同时隐藏内部实现细节。典型的分层结构如网络通信协议栈,从物理层、数据链路层、网络层到传输层,每一层都为上一层提供服务。 “仓库”架构风格是一种数据管理方法,它将数据存储视为一个独立的、全局可访问的仓库。在这种架构中,数据不是直接从一个处理单元传到另一个,而是先存储到仓库中,然后再由其他处理单元按需读取。这种风格在需要处理大量数据的应用中非常有用,如数据库管理系统。 “表格驱动解释器”是一种让程序通过查询表(通常是数组或映射结构)来决定下一步行动的架构。这种风格适用于那些决策逻辑简单、规则明确,且易于以表格形式表示的场景,例如某些类型的规则引擎。 对于特定的软件系统,如Arnold的视频租赁软件,可以使用上述的某一种架构风格来构建。例如,如果选择“分层系统”架构风格,那么可能会根据业务逻辑将系统分为用户界面层、业务处理层、数据访问层等,每一层承担特定的职责,上层不能直接访问下层的具体实现。 评估一个系统架构的适宜性需要考虑多个方面,包括但不限于系统的功能性需求、性能要求、开发和维护的便利性、可扩展性以及安全需求等。由于架构的选择会直接影响到系统设计的方方面面,因此架构的选择应该基于对问题领域和已有解决方案的深入理解。 架构风格的合适性取决于问题领域,即问题的性质决定了哪种架构风格更合适。对于某些问题来说,可能只有一种架构风格适用;而对于其他问题,则可能有多种风格均可应用,选择哪一种就涉及到权衡各种因素。 软件设计原则之一是“告诉,不要问”(Tell, Don't Ask),即倾向于通过方法调用来改变对象的状态,而不是通过查询对象状态并根据结果采取行动。这一原则提倡封装和高内聚,有助于减少系统中各个部分之间的依赖。 德梅尔法则(Law of Demeter)是一个面向对象设计的指导原则,它建议一个对象应该尽可能少地了解其他对象的内部细节。这有助于保持模块间的低耦合,使系统更容易维护和扩展。 理解和应用架构风格需要对系统进行深入分析,理解上下文的重要性,并知道在什么时候打破规则。在不同的上下文中,同样架构可能体现出不同的质量,而架构的优劣往往不是绝对的,而是相对于当前上下文的适宜性。
- tonghuasu2019-02-28啥实质内容也没有,骗人啊!
- 粉丝: 321
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2_1113重卡电动化创新聚焦日-录音转文字.docx
- “互联网+政务服务”整体建设方案 .docx
- 基于SSH的校园管理系统
- 精选微信小程序源码:面包旅行小程序(旅游类小清新版本)小程序(含源码+源码导入视频教程&文档教程,亲测可用)
- ArcGIS Pro SKD - ADGeoDatabase.daml
- C# winform自定义图片控件.zip,拖拽移动,滚轮缩放
- 基于python的dlib库的人脸识别实现
- ArcGIS Pro SDK - ADCore.daml
- rocketmq的客户端
- 精选微信小程序源码:户外旅游小程序(旅游类)小程序(含源码+源码导入视频教程&文档教程,亲测可用)