分解:
控制复杂性的技巧,就是分而治之。在设计一个复杂系统时,重要的是如何把它分解成一个又一个足够小的部分,然
后分别独立的处理每个部分。
分解的方法:
1、算法分解,所谓算法分解,可以将其理解为面向过程式的分解。算法分解强调的是事件发生的顺序。如:第一步
应该干啥,第二步应该干啥……
2、面向对象的分解,我们把系统看成一组自动化的代理,它们相互协作,执行某些高级的行为。操作不在是对应的
算法,而是对应对象的某些行为。每个对象都有它的独特行为,都是真实世界的某个对象的模型。我们在要求对象做
事时,只需要发送消息通知对象它们要做它们能做的事。
综合来说,两种分解没有对与错,各有各自的重要性,算法强调的是事件的顺序,面向对象强调的是一些代理,它们
要么发出动作,要么是被操作执行的对象。但是在构建复杂系统时,我们却不能同时使用两种方法来构建,因为它们
的观点是互不依赖的。要么采用算法,要么就采用对象。
当然,最后推荐使用面向对象的方式来构建系统,可以提高系统的复用性。并且依赖于复杂系统的5个属性,会大大
降低我们构建过程中的风险,我们思路就是从小做大,不断的完成增量开发。
抽象:
由于我们每个人同时能记录的信息量是有限的,一次性不能掌握多个信息。那么我们在这个过程中,可以忽略它的非
本质性的细节,转而处理这个对象的本质的东西。我们利用信息的分块和不断增大的语义内容。当我们采用面向对象
的观点看待世界时,更是这样,因为对象是作为真实世界中实体的抽象,代表了特定的一块密集而内聚的信息。
层次结构:
在复杂系统中显式地组织类和对象的层次结构,也是另一种增加单块信息的语义内容的方法。对象结构展示了不同的
对象之间如何通过一些交互模式(或者“机制”)进行协作。类结构同样重要,它强调了系统中的公共结构行为。如:
在研究皮肤组织细胞时,我们只需要研究某一个细胞即可,而不用去研究所有的系统。因为我们预期所有的其他细胞
都会表现出相似的行为。