程序原本(六十):程序设计的核心思想——对象系统:表达、使用与模式(数据是一种抽象,所以我们可以泛化从这种抽象中得到的结论)

阅读数:24 2019 年 10 月 1 日 16:48

程序原本(六十):程序设计的核心思想——对象系统:表达、使用与模式(数据是一种抽象,所以我们可以泛化从这种抽象中得到的结论)

在上述对对象系统的讨论中,我们首先考察的是剥离掉继承性之后的对象——亦即一组性质,或称之为一个复合的数据(或结构体)。对于这样的数据,GoF 模式从“数据间关系”的角度上,为每个子系统(一组数据)定义了两类可能的产出,其一为结构型,即一组有关系的数据;其二为行为型,即一组有关系的逻辑。上述所谓产出的方式,既可以是指执行该子系统(而得到运算结果),也可以是指对该子系统重新结构(从而最终达到某种外观表现)。因此,GoF 模式本质上是说明:

s(f)+s(d)

即“结构(逻辑 + 数据)”这样的基本模型作用于数据间关系之后的产出。

这样看来,尽管我们讨论 GoF 模式时是面向(或基于)对象系统的,但其中的绝大多数模式与“对象”并没有必然关系。同样,即使我们将这些模式的应用泛化到纯粹的“数据的获取、展示与调度”这一层面,也仍然只是它——作为思维方式——的一种应用。

我们可以(也是可选地)将这一思维方式提升到系统层面,那么我们会发现,GoF 模式也可以是一种系统组织方式。这种情况下,系统中的工件并非是数据,而是各种应用与应用间的消息。其中,应用可以理解为 s(f),应用间的消息则可以理解为 s(d)

以此为起点,我们事实上是在将 GoF 思想延伸到系统设计的各个领域。例如著名的系统设计模式 MVC 以及常用的插件框架,就可以视作几种 GoF 模式应用于某种、某类数据以及某个领域的结果14

14 参考《程序员修炼之道——从小工到专家》之“29 它只是视图”中的“超越 GUI”一节。

评论

发布