在熟悉语言的语法之后,想要进一步提升,那就是学习设计模式了.在GoF写出设计模式一书开始,之后不断的有设计模式的书籍出版,但是但多数都是在那本书的基础上写的,更多的是对那本书的阐述解释,让刚入门的新手去学习了解运用设计模式.至少我看到的设计模式的大部分图书也没有超出那本书的范围.
我看过不少的讲设计模式的书,但是看过后那些设计模式我都忘记的差不多.我没办法记住每一个模式,我是觉得那些模式没有讲到更本质.那些总结出来的设计模式更像是公式了.当然设计模式里面也有提到模式的目的是提高系统的可扩展性.对修改关闭,对扩展开放.但是也只是那么一提.然后更多的内容是去讲已有的哪些模式了,以及怎么去应用模式.
那么软件系统设计的目标我们也差不多清楚,就是实现既有的需求,并且还能够满足未来可能的需求.这就要求系统在设计之初要考虑到可扩展性问题.并且由于是一个复杂的软件系统,对于不是本系统的设计人员,系统架构也应该能让其很容易被理解.这是对模式的一点要求.另外的一点要求,是在构建系统时候,由于目标系统的复杂性,构建时候没有很好的规划极容易导致系统的不稳定,不完善.因此在构建系统时候,需要模式来解决系统内部之间的各个关系的相互作用,使系统这个整体更加健壮.
好的系统设计一定是清晰界限明确的.系统要被划分为小的子系统,各子系统之间的关系必须稳定明确.在构建复杂系统时候,将整个系统划分为子系统与其关系是简化复杂构建问题的手段之一.子系统又可以划分更小的子系统与其关系,最终解决整个系统构建问题.那么好的系统设计,就归结到子系统与其之间的关系上了.各子系统必须是功能明确,各不交叉,运行稳定.子系统之间的关系也应该是稳定且清晰简单.任何违背以上几点系统设计的要求的系统,必定是有各种各样的缺陷,要么运行不稳定,或者是可扩展性差,亦或是不容易被别人理解.
除了系统层面的设计,更加接近代码的设计也应该和系统层面的设计是一样,永远都不要构建功能庞杂,关系不明确且古怪的对象及其关系.最重要的原则是保持简单,一次只做一件事情.这样才能保证稳定性及简单性.
现在从设计软件系统的角度再看设计模式,我们就很清楚了.重要的不是设计模式本身,而是系统设计的最终目的,它才推动了设计模式的发展与演化.我之前看到过一本《元素模式》一书.书中把设计模式都是分解了来看,分解到不能分解的时候会发现,所有的设计模式都可以用一句话总结:设计模式是由类型,对象,方法,数据及其之间的关系组成.
不弄清楚本原,是不会真正明白设计模式的.
系统设计模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
- Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...