如何控制复杂性
来源:互联网 发布:四知太守后人 编辑:程序博客网 时间:2024/06/15 07:01
分解:
控制复杂性的技巧,就是分而治之。在设计一个复杂系统时,重要的是如何把它分解成一个又一个足够小的部分,然
后分别独立的处理每个部分。
分解的方法:
1、算法分解,所谓算法分解,可以将其理解为面向过程式的分解。算法分解强调的是事件发生的顺序。如:第一步
应该干啥,第二步应该干啥……
2、面向对象的分解,我们把系统看成一组自动化的代理,它们相互协作,执行某些高级的行为。操作不在是对应的
算法,而是对应对象的某些行为。每个对象都有它的独特行为,都是真实世界的某个对象的模型。我们在要求对象做
事时,只需要发送消息通知对象它们要做它们能做的事。
综合来说,两种分解没有对与错,各有各自的重要性,算法强调的是事件的顺序,面向对象强调的是一些代理,它们
要么发出动作,要么是被操作执行的对象。但是在构建复杂系统时,我们却不能同时使用两种方法来构建,因为它们
的观点是互不依赖的。要么采用算法,要么就采用对象。
当然,最后推荐使用面向对象的方式来构建系统,可以提高系统的复用性。并且依赖于复杂系统的5个属性,会大大
降低我们构建过程中的风险,我们思路就是从小做大,不断的完成增量开发。
抽象:
由于我们每个人同时能记录的信息量是有限的,一次性不能掌握多个信息。那么我们在这个过程中,可以忽略它的非
本质性的细节,转而处理这个对象的本质的东西。我们利用信息的分块和不断增大的语义内容。当我们采用面向对象
的观点看待世界时,更是这样,因为对象是作为真实世界中实体的抽象,代表了特定的一块密集而内聚的信息。
层次结构:
在复杂系统中显式地组织类和对象的层次结构,也是另一种增加单块信息的语义内容的方法。对象结构展示了不同的
对象之间如何通过一些交互模式(或者“机制”)进行协作。类结构同样重要,它强调了系统中的公共结构行为。如:
在研究皮肤组织细胞时,我们只需要研究某一个细胞即可,而不用去研究所有的系统。因为我们预期所有的其他细胞
都会表现出相似的行为。
- 如何控制复杂性
- 复杂性的控制
- 如何减少linux输入命令的复杂性
- 算法复杂性和如何计算时间复杂度
- 编程的一个关键是管理并控制好复杂性
- 如何更改AD域安全策略-密码必须符合复杂性要求
- 理解复杂性
- 算法复杂性
- 控制系统复杂性
- 复杂性思考
- 复杂性、易错性
- 算法复杂性
- 复杂性科学
- 数据结构, 时间复杂性, 空间复杂性
- [转]如何更改AD域安全策略-密码必须符合复杂性要求
- 简化根本复杂性,消除偶发复杂性
- 2 简化根本复杂性,消除偶发复杂性
- 简化根本复杂性,消除偶发复杂性
- Linux的vsftpd中配置
- Linux下的暴力密码在线破解工具Hydra详解
- SublimeText 前端常用插件安装与应用
- Linux 伙伴堆算法
- 安装VS2015报未能正确加载"CSharpPackage"包 和 未能创建 Visual C# 2015编译器
- 如何控制复杂性
- 怎样获取另一个类中封装的属性
- 基于Matlab的标记分水岭分割算法
- servlet层获得绝对路径
- SQL Server 存储过程(一)
- GEEK编程练习— —数组去重
- ADIOS
- 采样频率、采样点数、分辨率、谱线数
- 笔试题17. LeetCode OJ (4)