Skip to content

调用返回风格顾名思义,就是指在系统中增加了调用与返回机制。利用调用和返回,实现分而治之,将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性。每个子系统从其执行起点开始执行该构件的代码,程序执行结束,将结果返回给程序调用构件。

TIP

调用/返回风格架构主可以细分三种具体的架构风格:主程序/子程序、面向对象和层次结构风格

主程序/子程序风格

主程序/子程序风格是面向过程的经典架构风格。一般采用单线程控制,把问题划分为若干处理步骤,分别由主程序和子程序完成。主程序调用子程序,子程序将调用结果返回给主程序。同时,子程序通常也可以合成为模块,增加调用过程的层次性。主程序最终结果的正确性,取决于其下属的模块和子程序的执行结果。

主程序/子程序风格

这一风格基本上涵盖了所有面向过程的开发模式,作为程序开发的最经典模式,被普遍使用。主要特点:

  • 简单明了:符合传统的商业行为过程:浏览->添加购物车->购买->支付->收货->评价等。
  • 架构清晰:可以和程序流图、泳道图、状态机模型等架构图一一对应,方便开发和验证。

这一风格基本上涵盖了所有面向过程的开发模式,作为程序开发的最经典模式,被普遍使用。

面向对象风格

这种风格是主程序子程序风格的进化,它随时面向对象语言的产生而同步出现。它将数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。由对象来负责保持资源的完整性(成员变量)和程序之间的过程调用关系(方法)。

image-20220928200952693

这一风格基本上涵盖了所有面向对象的开发模式,是高级语言程序开发的最经典模式。主要特点,非常鲜明:

  • 完整性:每个对象独立负责维护其本身的完整性,比主程序子程序的紧耦合方式,更容易实现应用体完整性。
  • 隐蔽性:对象的表示对其他对象而言是隐蔽的,对象可以不影响它的客户就能改变其实现方法。

面向对象编程的优势:可以充分利用高级语言的优势来实现封装、聚合、继承、接口、多态、依赖、抽象、复用等特质。和现实生活中的实体逻辑可以一一映射地进行实现。

层次结构风格

分层是软件架构设计的主流方法之一,将应用设计成一个层次系统,每一层为上层服务,并作为下层客户。每一层最多只影响上下两层,同时允许每层可以用不同的方法来实现应用逻辑和功能。这对于解决软件的复杂性和重用性,提供了强大的支持。

经典模式比如:

  • OSI网络7层模型,TCP/IP网络4层模型:确保每一层可以采用不同的技术栈和设计思路,所有数据会根据网络层次结构进行数据包的封装,不会出现层次的跳跃现象。
  • 操作系统内核和用户态管理:操作系统从核心的内核层,到外围的工具、用户系统,类似一个洋葱模型,层层包裹,所有的过程调用只在相邻两层之间进行。 如下图所示:

image-20220928201136428

应用分层模型:比如MVC三层模型、领域驱动4层模型等。

TIP

层次结构风格极大化地抽象了软件架 构,摆脱了编程语言的限制。其他如C/S、B/S、SOA应用架构等,横跨了软件、 系统和网络范畴。

但它们有一个共同点,都采用了层次化的描述方式,所以可以 看成是层次结构风格的延伸。

  • 隐藏复杂性:每一层可以独立设计、开发,只要满足和上下层的接口定义即可。 同一层可以实现架构重用和借鉴,从整体上将应用实现了分层解耦。
  • 邻居互动性:每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层

调用返回风格总结

调用返回风格是5大架构风格中最润物细无声的一种。它几乎自然而然地被运用在了所有开发设计过程中:

在面向过程的开发中,通常都采用了主程序/子程序风格在面向对象的开发中,几乎都是用了面向对象风格在应用的分层设计中几乎都采用了层次结构风格