设计范例(Design Pattern)真的很重要吗? part 1

来源:互联网 发布:美颜照片还原软件 编辑:程序博客网 时间:2024/05/01 17:22

To raise new questions, new possibilities, to regard old problems from a new angle, requires creative imagination and marks real advance in science. 

-- Albert Einstein

 

 

网络上对于Design Pattern有很多争议,许多争论是感情化的表达,而有些意见还是比较中肯的,怎么从这些口水战中,挑出最有价值的东西并加以吸收,是本文最关心的问题。

 

 

分析这个问题的可以从多个角度入手,包括

1. 软件设计本质的核心价值是什么? Design Pattern的核心能力是什么?

不管软件工程如何发展,系统的复杂性如何增长,其核心价值40年来并未有什么实质的变化,具体罗列如下:

  • 软件必须能够解决现实中需要解决的问题,达成设计的初衷。
  • 可维护性,能够最小成本完成维护
  • 能偶一定程度预测未来的变化,并且在架构上能容易适应这些变化。

原理上来说,Design Pattern认可并且支持这些价值观,

 

2. Design Pattern对于软件工程做了哪些贡献?

  • 作为一种沟通工具和软件行业语言Design Pattern系统化的命名和良好的模型抽象,使得一般的程序员也能容易理解。随着Design Pattern概念的普及,带来了软件工程师之间的沟通效率的提高,如果没有Design Pattern,可能描述一个结构概念需要讲几百个字,而现在只需要提几个字,就能让听众理解十之八九。
  • 作为软件开发的过程优化方法:软件开发的本质是一个“重复性过程”(Recurring Process),相同的“子规则”,“微结构”和“子功能”,总是不断的在各种软件中重复。不排除各个行业之间的不同,比如Photo Shop要解决的问题一定与Star Craft不同,但除去程序应用逻辑的不同,如果分解到函数实现的底层,两者并没有本质不同。从宏观的软件开发过程来看,设计就是根据待解决问题的特点和应用场景,将已有的“子规则”,“微结构”和“子功能”定制化,使其组合起来能解决具体的实践问题。Design Pattern总结出这些“微结构”和“子规则“,将其标准化和通用化,并提供例子和提示,帮助开发者更好的应用于面向对象的设计和开发实践活动中。

 

3. Design Pattern能解决哪些问题,不能解决哪些问题?

任何事物都有它的局限,有些局限是主观设计时被排除在外,有些局限是客观因素所制约。

 

这部分内容留待下一节来讨论。

 

原创粉丝点击