如何控制复杂性

来源:互联网 发布:四知太守后人 编辑:程序博客网 时间:2024/06/15 07:01

分解:


控制复杂性的技巧,就是分而治之。在设计一个复杂系统时,重要的是如何把它分解成一个又一个足够小的部分,然

后分别独立的处理每个部分。


分解的方法:


1、算法分解,所谓算法分解,可以将其理解为面向过程式的分解。算法分解强调的是事件发生的顺序。如:第一步

应该干啥,第二步应该干啥……


2、面向对象的分解,我们把系统看成一组自动化的代理,它们相互协作,执行某些高级的行为。操作不在是对应的

算法,而是对应对象的某些行为。每个对象都有它的独特行为,都是真实世界的某个对象的模型。我们在要求对象做

事时,只需要发送消息通知对象它们要做它们能做的事。


综合来说,两种分解没有对与错,各有各自的重要性,算法强调的是事件的顺序,面向对象强调的是一些代理,它们

要么发出动作,要么是被操作执行的对象。但是在构建复杂系统时,我们却不能同时使用两种方法来构建,因为它们

的观点是互不依赖的。要么采用算法,要么就采用对象。


当然,最后推荐使用面向对象的方式来构建系统,可以提高系统的复用性。并且依赖于复杂系统的5个属性,会大大

降低我们构建过程中的风险,我们思路就是从小做大,不断的完成增量开发。


抽象:


由于我们每个人同时能记录的信息量是有限的,一次性不能掌握多个信息。那么我们在这个过程中,可以忽略它的非

本质性的细节,转而处理这个对象的本质的东西。我们利用信息的分块和不断增大的语义内容。当我们采用面向对象

的观点看待世界时,更是这样,因为对象是作为真实世界中实体的抽象,代表了特定的一块密集而内聚的信息。


层次结构:


在复杂系统中显式地组织类和对象的层次结构,也是另一种增加单块信息的语义内容的方法。对象结构展示了不同的

对象之间如何通过一些交互模式(或者“机制”)进行协作。类结构同样重要,它强调了系统中的公共结构行为。如:

在研究皮肤组织细胞时,我们只需要研究某一个细胞即可,而不用去研究所有的系统。因为我们预期所有的其他细胞

都会表现出相似的行为。


0 0
原创粉丝点击