软件架构风格
定义:
软件体系结构风格是人们从大量实际的软件案例中提炼出来可以复用的架构层面解决的方案。
数据流风格
01批处理风格
核心思想:将任务分解为一系列独立的步骤,每个步骤处理一批数据,完成后将结果传递给下一个步骤。整个过程通常是离线、非交互式的。
特点:
- 批量处理:数据以批量的形式处理,而不是实时或流式处理。
- 顺序执行:步骤之间有明确的顺序,前一步骤的输出是下一步骤的输入。
- 高延迟:由于是批量处理,通常不适合实时性要求高的场景。
02管道过滤风格
核心思想:将任务分解为一系列独立的过滤器(Filter),每个过滤器对数据进行处理,并通过管道(Pipe)将数据传递给下一个过滤器。过滤器之间是松耦合的。
特点:
- 流式处理:数据以流的形式通过管道传递,适合实时或近实时处理。
- 松耦合:过滤器之间独立,可以灵活组合和替换。
- 低延迟:适合需要快速响应的场景。
- 适用场景:数据流处理、实时日志分析、编译器设计等。
主要区别
调用返回风格
01主程序/子程序
- 程序代码(mian,子方法等,具有返回)
02 面向对象
建立在数据抽象和面向对象的基础上,对象是通过函数和过程的调用来交互的。
03层次结构
特点:上层调用下层服务,没有多加一层解决不了的事情
- MVC架构(解耦分层)
- OSI七层协议(解耦,简单化)
- 云计算架构风格(Sass层+Pass层+Iass层+物理层)
- 电脑(物理层+操作系统+软件)
独立构件风格
01进程通信(不咋考)
- 进程同步异步过程
02事件驱动系统(隐式调用)
- 特点:构件不直接调用一个过程,而是触发一个或多个事件。
- 典型应用:
- windows 界面操作,单机和双击 驱动的事件不同
- 调试器
- 监听器
虚拟机风格
特点:软件和硬件不支持时,通过虚拟机去模拟仿真硬件,消除差异。
01解释器
特点:可以仿真硬件执行过程和一些关键应用。非常灵活
缺点:执行效率低
典型应用:
- 解释器
- 同声传译
- 网络游戏
- 安装jdk,java虚拟机
02规则系统
- 特点:在解释器风格基础上,增加经验规则,即支持库做支持,在现有解释器上进行解释
- 典型应用:
- 专家系统
- 规则引擎,将业务规则从业务逻辑中拆分出来(支持库),达到解耦,易修改(拆除if else)
仓库风格
特点:集中存放数据到一个仓库!
01数据库系统
02黑板系统
03超文本系统
- 特点:仓库相当于是人类大脑,大脑主管去操作构建,构建间以网状连接方式,用户可以在构建之间按照人类的联想思维跳转到相关构建。
- 典型应用:早期静态网页(任意页面跳转)