GitHub -> DajinPang

Men just want to be hard !

面向对象摘录

作者:在好
链接:https://www.zhihu.com/question/28790424/answer/102240328
来源:知乎
·内聚

内聚,通俗的来讲,就是自己的东西自己保管,自己的事情自己做。

经典理论告诉我们,程序的两大要素:一个是数据(data),一个是操作(opration)。而 PASCAL之父Nicklaus Wirth则进一步提出了“程序 = 数据结构 + 算法”的著名公式。虽然提法上有所差异,但是其根本内涵却是一致的,微妙的差别在于,“数据 + 操作”是微观的视域,“数据结构 + 算法”则是中观的视域。而在宏观的视域下,我认为“程序 = 对象 + 消息”。对象是什么?对象就是保管好自己的东西,做好自己的事情的程序模块——这就是内聚!传统的面向过程编程方法由于割裂了数据结构和算法,使得软件的内聚性普遍低迷,曾一度引发了软件危机。试想,大家都自己的东西不好好保管,自己的事情也不好好做,不引发危机才怪呢!当然,对象的内聚只是内聚的一个层次,在不同的尺度下其实都有内聚的要求,比如方法也要讲内聚,架构也要讲内聚。

《周易·彖传》中讲“乾道变化,各正性命,保合太和,乃利贞”,就是要求每一个个体因循着各自的禀赋而努力成就各自的品性,然后各自保全,彼此和合,最终达成宇宙的完满状态。《论语·宪问》中,子路问君子。子曰:“修己以敬。”曰:“如斯而已乎?”曰:“修己以安人”,更是明确的教导我们要不断提高自身的内聚性,最大限度地减少给他人造成的麻烦,从而达到安人、安百姓、安天下的目标。我想,成长的过程就是一个不断提升内聚的过程。“自己的东西自己保管,自己的事情自己做”,这些孩提时代的教诲,放到今天仍能让不少“大人”脸红不已。太多的人保管不好自己的“东西”,保管不好自己的身体,保管不好自己的婚姻,更保管不好自己如蛛丝般震颤飘荡的狂乱的心。至于做好自己的事情,则更是惘然,甚至很多人连自己的事情是什么都搞不清楚,因此浑浑噩噩,饱食终日。内聚,是一个值得我们好好反思的问题。

·依赖·耦合

在面向对象编程中,对象自身是内聚的,是保管好自己的数据,完成好自己的操作的,而对外界呈现出自己的状态和行为。但是,没有绝对的自力更生,对外开放也是必要的!一个对象,往往需要跟其他对象打交道,既包括获知其他对象的状态,也包括仰赖其他对象的行为,而一旦这样的事情发生时,我们便称该对象依赖于另一对象。只要两个对象之间存在一方依赖一方的关系,那么我们就称这两个对象之间存在耦合。 比如妈妈和baby,妈妈要随时关注baby的睡、醒、困、哭、尿等等状态,baby则要仰赖妈妈的喂奶、哄睡、换纸尿裤等行为,从程序的意义上说,二者互相依赖,因此也存在耦合。首先要说,耦合是必要的。我们来看以下这个实验。

posted @ 2019-05-08 22:51  StevenPang  阅读(65)  评论(0编辑  收藏  举报