2012年10月18日

我们的祖国

 

posted @ 2012-10-18 19:36 侯京彪 阅读(96) | 评论 (0)编辑 收藏

设计模式

学习设计模式的人大多有这样的经历,刚开始学习了一两个模式,感觉太有用,简直如有神助,就像一个人突然有一天拿到一个锤子,然后看什么都像是钉子,情不自禁的想上去敲两下,以显示锤子的威力。但是随着学习的深入,知道了更多的模式,情况就变了。感觉别说用了,能区分这些模式就不错了,更谈不上用了。其实大部分人学习设计模式的过程中都会遇到类似的困难,并不是我们笨或者不够聪明,这是由人类的大脑结构和思维方式决定的。但是对于一个真正掌握了设计模式的人来讲,似乎并没有这么多障碍,其实不是他多聪明而是他走过了别人还没有走过的路,抓住了设计模式的本质。

设计模式的目的?严格的讲,设计模式是软件工程发展的产物,它帮助程序员更好的设计软件,使得设计的软件能够尽量的重用,易于开发,便于维护。

设计模式的和编程语言的关系?设计模式可以认为比高级编程语言更高一个层次。高级语言无法直接执行,它依赖编译去把它转化为汇编语言,再进一步转化为机器码,计算机才能执行。就像高级语言需要转化为汇编语言一样,设计模式需要面向对象语言。简单的可以这样理解,高级语言是一门以变量和函数为素材的语言,而设计模式是以对象/类素材的语言。

设计模式是什么?是经验总结,其实设计模式这个名字虽然来自建筑学,但是它还是很精确的,我们并没有说什么设计理论,设计方法,或者设计机制。而是用了模式这个词,模式本身的意思就是一种常见的方式。

设计模式会影响程序的执行效率吗?设计模式的实现依赖的是高级编程语言的语义,也就是说,机器并不能识别设计模式,CPU执行指令的之后,只知道机器码,而并不知道上层的概念。一般来讲,设计模式肯定不会提高程序的执行效率,但是如果用的好的话,会提高程序员的开发效率。

设计模式的原则,设计模式要表达那些概念?重用,独立,目标是要用面向对象的封装,继承,多态,在有些时候要用模板

设计模式的具体实现和面向对象,设计模式是对接口编程,而不是对实现编程。因为实现的部分,基本上是算法和数据结构的任务。

那么多设计模式,单单记住名字都不容易了,到底该怎么学呢?其实,设计模式对应的是一类场景,或者说是一类场景的抽象。设计模式的静态性和设计模式的动态性。学习设计模式要关注几个方面,用户如何使用?

设计模式的比较。

程序员应该如何对待设计模式?设计模式不是万能的,也不是非用不可的(在设计模式之前,软件开发不是也存在了很多年么?)。我们对待设计模式的态度应该是积极的,实际的。除非很明显的场景,很多场景不能直接套用现有的模式或者我们无法很短时间内就知道这个场景适合某个模式,而是发现程序中不合理,或者说不舒服的地方,对程序进行一步一步改进,在这个改进的过程中,可能会发现程序的场景正好适合某个模式,于是开始使用这个模式。

熟悉设计模式的一个方法,事实证明,人类的大脑是很容易被洗的,因此我建议,其实人世间并没有设计模式,被洗多了,也就知道设计模式了。

设计模式的综合使用

设计模式的实践

posted @ 2012-10-18 19:10 侯京彪 阅读(89) | 评论 (0)编辑 收藏

程序 = 数据结构+算法

几乎所有学过计算机的人都知道这个公式,但是为什么会有这样一个公式?这个公式对吗?程序是什么?数据结构是什么?算法是什么?为什么能够组合在一起这么表达?我希望在这里能给大家讲清楚。

程序本身可以认为是对这个现实事物的一个模拟。它之所以能模拟世界,就是因为它具有数据结构和算法。数据结构是静态的,只表达了数据之间的位置关系。算法是动态的,因为算法的定义里面很重要的一条就是“可执行”。算法弥补了数据结构的不足,它可以比较数据,修改数据。因此数据结构的静态性和算法的动态性是互补的,它们组合起来形成的表达力是无穷的。表达力是什么?我认为,A的表达力,就是所有能够抽象为A的事物。比如数字5的表达力,5只狗,5只猫,5头牛,都可以用5来表达。但是5不能表达6只狗,6只猫,6头牛,更重要的是5不能表达“从5增加1变为6的过程。数据结构和算法就不仅可以表达数字还可以表达数字的加减,突然间你会发现数据结构和算法不能表达什么,其实还是有的。

posted @ 2012-10-18 14:10 侯京彪 阅读(33) | 评论 (0)编辑 收藏
仅列出标题  

导航

<2019年7月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿(2)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜