菜鸟编三维地质建模系统-设计模式(2)

上篇我们谈到了将对象的内部操作行为封装起来,而将对象与外界的通信操作通过设置一个神经中枢来对其进行控制,既然用到了仿生学的原理,我们就要对人体的生理心理行为进行更进一步的分析:大脑并不是面面俱到,事必躬亲的,比如植物神经系统(自主神经系统),主要支配内脏、血管和腺体的行为,大脑根本无法直接去控制,还有脊髓的反射功能,快要滑倒时的身体姿势状态校正、手被烫时的自动缩回都是脊髓自动反射的,如果等到大脑思考一下再反应的话,黄花菜都凉了。大脑也是一个非常复杂的对象,分左右两个半球,每一半球上分别有运动区、体觉区、视觉区、听觉区、联合区等神经中枢,由此可见,大脑两半球是对称的,两半球的联合区,分别发挥左右半球相关各区的联合功能。说了这么多,对我们理解设计模式有什么帮助呢?虽然我们人体比世界上最精密的计算机还要复杂千万倍,但是系统论的思想是一致的,现代工业的大型软件同样面临着众多复杂的对象、复杂的逻辑关系、复杂的实现算法等问题,参考一下万物之灵的人体的运作方式至少可以得到以下的启发:

1 封装与抽象:人类自我感知的与互相交流的都是抽象级别的东西(身、心、灵),人们从来不互相谈论自己身体内某个细胞一天的旅程,那么对于一个复杂的系统来说,只要将抽象层次的用户的需求展现出来就可以了,至于内部的具体实现不应该暴露出来,达到多层封装,多层抽象的目的。

2 分工与协作:人体内的各个器官合作得真是太愉快了,眼睛不能听,耳朵不能看,各个器官各司其责,共同来完成一些很复杂的行为。像“微风吹过,送来缕缕清香,仿佛远处高楼上渺茫的歌声似的。”这只不过是朱自清用到的修辞手法-通感。那么对于一个复杂的系统来说,每个对象都应该只去做一件单一的事情,通过对象的组合来实现更强大的功能。

3 全息继承与动态响应:人体内的每个细胞内的基因都具有全息性,但是很有趣的是每个细胞都知道自己该干什么不该干什么,非常守本分,真是“美其食,任其服,乐其俗,高下不相慕”啊!那么对于一个复杂的系统来说,一个基本的界面基础类库是必须准备好的,一个行业相关的类库是必须准备好的(科学计算函数库、计算几何函数库、通信类库、协议封装库),在编程中我们也只能做到这些了,总不能想着编一套复杂的程序让它自己去进行需求分析、系统分析、编码和测试吧!呵呵。

好,现在回到正题,对象的继承、组合、创建、删除这些会怎样影响设计模式呢!我们大家都常看到、听到说“优先使用组合而不是继承”、“面向接口来编程”、“使用COM组件技术”、“.net”等等,技术的更新真是日新月异,但万变不离其宗,技术的更新都是为了更好的满足或引领广大客户和程序员日益增长或被增长的程序和编程需求,编程语言太低级了以后,比如汇编之类的,编程的效率就会很低,编程语言太高级了以后,由于抽象层次太高就会使人浮于表面,对特殊问题很难自主解决,微软的目标就是要让大部分的程序员在多层抽象之上编程,底层内部的事情由他们的天才团队处理就好了,这样人们就会越来越离不开微软的平台,GOOD OR NOT GOOD,这是个问题!如果代码都是开源的话,抽次层次高点是很好的事情,这样可以尽情的享受编程的乐趣!如果是个黑箱的话,编起来总感觉知其然而不知其所以然,会觉得自己越来越傻了!

对象在创建时会遇到哪些问题呢?当对象很多的时候,对象的创建就很麻烦,创建什么对象?对象的名字是什么?不太方便,如果将一些类似对象的创建过程封装在一起可以方便一些。对象的删除同样如此,未及时释放空间会导致内存占用越来越多,到最后就无内存可用了。

对象在继承时会遇到哪些问题呢? 父类可以多态性指向不同的子类,但是子类和父类耦合紧密,子类改变不了父类,也无法选择其他的父类,这在某些场合就显得不灵活。

对象在组合时会遇到哪些问题呢?对象组合在一起时,对象之间的耦合性达到了松的目的,但是在创建整体的对象时,需要创建所有局部类的对象。

实践出真知!设计模式的东西以后再慢慢体会吧,现在先为了三维地质建模系统选择一套函数库或者自己编写一套,下篇就写怎样组建相关的库。

你可能感兴趣的:(设计模式)