《设计模式精解》学习笔记(九)——阶段小结

《设计模式精解》学习笔记(九)——阶段小结
 
按照《设计模式精解》的顺序,书到这里作者做了个阶段性的总结。作者单独列出一篇,分三章总结并讲述了设计模式的选择和运用,虽然到目前为止书上才讲了四个模式,但是作者通过前面的实际例子分析了各模式之间的关系,和在实际中怎样去选择和运用设计模式。我想这样的方法也适用以后的学习和运用。
 
作者通过实际例子详细分析了各个模式的特点和在运用时的优略。作者用了一个很有吸引力的标题:“用模式的方法思考”。在我看到这里的时候,本来想仔细看上那么一两边体会一下模式的精妙和更好的理解OO思想。但是为了学习的完整,我还是写下了这篇文章以记录我学习的痕迹。在先前的思路中我把这片文章的标题也命成“用模式的方法思考”。但是那样太吸引眼球,毕竟我的文章是要贴到Blog上的,是别人能看到的。为了不招惹众人的谩骂我还是把标题改为阶段小结比较好。再说,现阶段的我虽然有了一定的实践经验,也看了不少书,但是用模式的方法思考,这样的能力还非常的弱。
 
学到这里我对面向对象的特性有了重新的认识。
以前提到封装,我的认识是将一类事物有用的特性和功能封装到一个类中,比如说人,人有很多特性:年龄、性别、身高等等。但是在某一个系统中可能我们不需要身高,所以将身高封装进来就是多余的。很长一段时间我为自己有这样的认识而沾沾自喜,但是看了《设计模式精解》后作者的观点更高,将变化点进行封装以适应系统的需要。让我认识到了封装的深层含义。
 
说到继承,在书本上看到的最多的就是继承在OO中可以提高代码的重用,而在《Thinking In Java》和《设计模式精解》中作者多次提到类的组合要优于继承,在设计模式中继承的威力还是非常大的。在我对Strategy(策略)模式学习的时候,我的理解是该模式就是一个类继承体系,根据对象的向下转型而得到不同的方法和结果,关于继承在今后的学习和工作实践中还要好好学习和体会。
 
多态对于我来讲其实也并不陌生。当初在学习C++时就很是下了一番功夫。《C++ Primer》中关于多态的部分更是看了又看,最后感觉多态是个很玄,很抽象的东西。但是当看了《设计模式精解》后对多态有了些清楚的认识,其实多态是个很实在的概念。在Bridge模式中主要是抽象类及其产生的多态行为起了关键性的作用,多态的威力更是巨大的。现在想想当初的想法是多么的幼稚和可笑啊。
 
学习的过程也是一个思考的过程。在《设计模式精解》第十一章中作者通过分析Alexander Christopher关于在建筑领域中对设计模式的概括,通过建筑领域里一个一个的场景,作者在细细品味理解着Alexander Christopher的思想。进而从中提炼出设计模式在软件开发中的运用。其实模式最早应该是GOF归纳出来的,作者应该细细研读GOF的著作才是。可能是为了追本溯源吧。书看到这里,我学习的不应该仅仅是作者归纳出来的一个个模式,更应该学习作者的善于思考的特点。在前面的学习中,每学到一个模式我就反复想着自己做过的系统。想着那里可以运用某个模式更好的组织类,哪里可以更好的优化一下结构。这段时间我发现自己对模式和OO理解的比以前更好些。正像某些牛人说得那样,学习模式绝对不是在浪费时间,花那点时间是非常值得的。这是不是就好像我当初下了好大功夫去学习数据结构与算法呢?虽然我现在写不出某个具体算法但是我还记得某个算法的功能和优劣,只要碰到问题我就会去查书,然后照着书改装一个适合我程序的算法。在学了几个模式后,我觉得设计模式是个反复学习和体会的东西,就像GOF在他们的书中说得那样。
 
直到现在我写程序时,结构化的思维还是非常浓重。我不知道我的习惯已经固定还是我的经验和知识不够,又或许就像我的朋友说得那样,我脑筋太死板,不善于思考。或许学习设计模式能给我一些帮助。
 
总的来说《设计模式精解》这本书是非常不错的,作者将模式用最通俗易懂的语言讲了出来。让人很容易理解。起码我对书中的内容理解起来不是那么费尽。在前面的学习中。每当学到一个模式时,我都会参考大量的文献。最后我觉得其实GOF的书还是非常不错的,不想我当初感觉的那样难理解。到这里我才突然觉得不是GOF的书好理解了,而是我的水平稍微有了那么一点点提高。这对我来说是一种鼓励。我想以后的学习中我应该还想以前那样参阅多个文献,等《设计模式精解》看完后我应该以GOF的书为主,毕竟C++对我来说看着比较亲切。
 
在《设计模式精解》第十二章中,作者通过具体的实例引领读者怎样进行分析和解决问题,最重要的是在一个特定的场景中怎样去分析和运用某一个模式,使该场景达到最好的效果。正如Alexander所描述的设计思想:从最简单的角度观察问题,然后添加附加的特征,逐渐让设计变得复杂,因为我们加入了更多的信息。在这里Alexander给了我们更好的方法。通过在问题领域中使用模式,我们可以用一种不同的方式来看待问题。我们从整体视图开始,然后逐渐添加特性。每个模式都给我们在使用它之前更多的信息。这一章中作者的思考方式非常值得我去学习,体会。
 
在《设计模式精解》第十三章中作者讲了设计模式的几个策略和原则。作者从模式的机制出发,帮助读者更好的去理解设计模式,进而提高自身的分析和设计能力,无可否认的是,学习设计模式确实能提高自己的分析和设计能力,在这一点上我已经或多或少的有了些体会,得到了些甜头。
 
开闭—原则:
这条原则的意思是:模块、方法和类应该对扩展是开放的,而对更改是封闭的。换句通俗的话说,我们必须将我们的软件设计成这样:我们可以在不修改代码的前提下对我们的软件进行扩展。
从场景进行设计的原则、包容变化的原则。这些策略让我们可以将决策推迟,直到我们可以看清楚这些决策的细节。观察我们设计的场景给了我们更好的设计。通过包容变化我们可以接纳未来可能出现的变化。
 
到这里我要结束这篇了,这篇文字实在是托的时间太长了。以至于我都忘了书上讲的什么了。这篇文字有个显著的特点:滥。写的实在是太滥了。滥就滥吧,也许下一篇会好一些。
 
 
 


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=610781
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值