这件事所涉及的东西就是这么几个对象,本来它们各自独立,老死不相往来。
只不过在“住店”这个外部驱动力下,几个对象“偶然”、“暂时”互相联
系,利用其他对象提供的公开服务,完成了一些交互。在交互中,各自的数据
可能会发生一些变化,但对象的本质没有变。这里也要注意,这种交互虽然在
一定程度上由既定逻辑预定义,但不像过程论认为“万事万物都已注定”,在
对象论下,对象间的交互是“偶然的”、“暂时的”,这次五个人因为住店这
个外部驱动力交互了一次。但下次如果魏国和蜀国交战变为驱动力,他们间的
交互就不是拿钱给钱了,而是刀兵相见。所以,对象论不认为“一切都已注
定”。
1.3、总结
通过上面一个例子,不知各位是否已经明白程序世界中两种世界观看事物
的不同。下面,有一些问题还要明确一下。
I. 过程论和对象论是两种看世界的观点,没有孰对孰错、孰好孰坏之分。
II. 过程论和对象论不是一种你死我活的绝对对立,而是一种辩证统一的
对立,两者相互渗透、在一定情况下可以相互转化,是一种“你中有我、我中
有你”的对立。如果将对象论中的所有交互提取出来而撇开对象,就变成了过
程论,而如果对过程论中的数据和逻辑分类封装并建立交互关系,就变成了对
象论。
III. 过程论相对确定,有利于明晰演进的方向,但当事物过于庞大繁杂,
将很难理清思路。因为过程繁多、过程中又有子过程,容易将整个世界看成一
个纷繁交错的过程网,让人无法看清。
IV. 对象论相对不确定,但是因为以对象为基本元素,即使很庞大的事
物,也可以很好地分离关注,在研究一个对象的交互时,只需要关系与其相关
的少数几个对象,不用总是关注整个流程和世界。但是,对象论也有困难。例
如,如何划分对象才合理?对于同一个驱动力,为什么不同情况下参与对象和
交互流程不一样?如何确定?其实,这些困难也正是面向对象技术中的困难。
综上,我们知道在程序世界中,存在着过程论和对象论两种对立的世界
观,并且其各有千秋,无法定夺孰好孰坏。但是,对象论似乎更有助于分析规
模较大的事物。本文是探讨面向对象的,所以,在下文中,都会选择对象论作
为世界观。这种以对象为本的世界观,也是本文后续一切的基础和出发点。
真经第二章——抽象 Abstraction
“金、木、水、火、土元素,构成宇宙万物,并作为各种自然现象变化之
基础——五行说”
2.1、导言