软件架构风格之调用返回风格:主程序、面向对象、分层,到底怎么区分?

软件架构风格之调用返回风格:主程序、面向对象、分层,到底怎么区分?

备考软考架构师的时候,调用返回风格(Call-Return Style)这块总是搞混。主程序/子程序、面向对象、分层架构,它们都算调用返回风格,但考试问你"这段描述属于哪种子风格"------瞬间就懵了。

这篇文章用最直白的方式,把它们的区别讲清楚。

一句话说清楚

调用返回风格的核心思想:一个模块调用另一个模块,被调用的模块执行完把结果返回给调用者。就这么简单。

但同样是"调用-返回",组织方式不同,就分出了不同的子风格。

主程序/子程序风格

这是最原始的一种。结构就是:

复制代码
主程序
  ├── 子程序A
  ├── 子程序B
  │     └── 子程序C
  └── 子程序D

特点

  • 一个主程序控制全局,调用各个子程序
  • 子程序之间也可以互相调用
  • 数据主要通过参数传递
  • 全局变量是"共享数据区"

典型场景:早期的 C 语言程序、Shell 脚本、批处理流程。

识别关键词:主程序、子程序/子函数、全局数据区、单线程控制。

面向对象风格

这是现在最主流的一种。把数据和操作封装成对象:

复制代码
对象A(数据 + 方法)
  │ 调用
对象B(数据 + 方法)
  │ 调用
对象C(数据 + 方法)

特点

  • 数据和对数据的操作封装在一起(封装)
  • 通过继承复用代码
  • 通过多态实现灵活调用
  • 对象之间通过"消息"(方法调用)通信

典型场景:Java、C++、Python 写的绝大多数业务系统。

识别关键词:对象、类、封装、继承、多态、消息。

敲黑板:面向对象也是调用返回风格!只不过调用的是"对象的方法"。

分层架构风格

把系统按职责分成若干层,每层只调下一层:

复制代码
表示层(UI)
  │ 调用
业务逻辑层(Service)
  │ 调用
数据访问层(DAO)
  │ 调用
数据库

特点

  • 严格分层:第 N 层只能调第 N-1 层
  • 每层只负责一类事情,职责清晰
  • 层与层之间通过接口通信
  • 修改某一层的实现,不影响其他层

典型场景:Web 应用(Controller → Service → Repository)、OSI 网络七层模型。

识别关键词:分层、N层架构、层间接口、逐层调用。

一张表搞定区别

维度 主程序/子程序 面向对象 分层
组织核心 功能分解 对象/类 抽象层次
耦合方式 参数+全局变量 方法调用 层间接口
数据共享 全局数据区 对象内部私有 层内共享
扩展方式 加子程序 继承/组合 插入新层
典型例子 C程序 Java项目 Web三层架构

考试怎么答

软考经常这么出题:

"某系统采用分层结构,将业务逻辑、数据访问和界面展示分离" ------ 这是分层架构风格。
"系统由多个对象组成,对象之间通过消息传递进行通信" ------ 这是面向对象风格。
"系统有一个主控模块,通过调用子函数完成计算" ------ 这是主程序/子程序风格。

记住口诀:看组织方式------是功能拆解(主程序)、对象封装(面向对象)、还是层次抽象(分层)

写在最后

说实话,这三种风格在实际项目中经常混着用。比如一个 Spring Boot 项目:整体是分层架构(Controller→Service→DAO),但每一层内部用的是面向对象风格,某个工具类可能又是主程序/子程序风格。

考试归考试,实际干活不用死抠定义。但考试要过,这些概念还是得门儿清。

有问题评论区聊。

相关推荐
@insist1231 天前
系统集成项目管理工程师-数据分析应用与数据安全
数据分析·软考·系统集成项目管理工程师·软考中项·软件水平考试
一米阳光86612 天前
软考(中级)软件设计师核心笔记(9)算法——时间复杂度与空间复杂度、查找算法、排序算法
笔记·算法·职场发展·软考·软件设计师·中级职称
一米阳光86612 天前
软考(中级)软件设计师核心笔记(8)数据结构——树与二叉树
数据结构·笔记·职场发展·软考·软件设计师·中级职称
能年玲奈喝榴莲牛奶2 天前
系统规划与管理师-第一章-考点记忆
大数据·数据库·软考·系统规划与管理师·系规
basketball6162 天前
软考中级网络工程师 第6章 网络安全 备考总结
大数据·网络·web安全·网络工程师·软考
向上的车轮2 天前
软考「系统规划与管理师(第2版)」「系统科学与哲学方法论」
软考·软考系规·系统科学与哲学方法论
一米阳光86613 天前
软考(中级)软件设计师核心笔记(8)数据结构——图
数据结构·笔记·职场发展·软考·软件设计师·中级职称
basketball6163 天前
软考中级网络工程师 第4章 无线通信网 备考总结
linux·服务器·网络·网络工程师·软考
一米阳光86613 天前
软考(中级)软件设计师核心笔记(8)数据结构——线性结构、数组、矩阵
数据结构·笔记·职场发展·软考·软件设计师·中级职称
@insist1234 天前
系统集成项目管理工程师-安全架构与云原生架构
云原生·架构·软考·安全架构·系统集成项目管理工程师·软考中项·软件水平考试