学习笔记(设计模式1)

  首先还是吐槽吐槽,研究生应该就是没有暑假的,呆在这里帮导师干活,可是导师的这个研究方向真的是一点兴趣都没有,但是也要帮着老师干点事情,只求安稳毕业的心态了。

  考试结束的日子6月26日到现在7月20日差不多一个月的时间了,这段时间抽空欢欢乐乐的看完了《head first设计模式》,因为找工作的时候面试单位很多都会考察OO的一些知识,基础的OO知识根本不够他们考察的,他们会考察一些设计模式的知识。这些知识也是我所欠缺的,本科的OO课程仅仅停留在基础的封装、继承、多态层次上。欢欢乐乐的看完是因为head first这个系列的书,说到系列,其实设计模式这个是我看这个系列的第一本书,书的风格真的不太一样,有点类似中国人的大话系列,写作风格非常的风趣,而且书中结合比较形象的例子,对象村的咖啡店、气象站、糖果公司这些都会提出一些程序的需求,然后首先根据需求构造一个简单的而且不易扩展的程序,然后突然新的需求来了,不断的通过重构程序引出不同的设计模式,这样就可以体会到设计模式的好处了,当然也有一些副作用的,不过相对于易扩展的程序已经被忽略了。书中还掺杂了OO设计的原则,设计模式最终还是根据好的OO设计原则总结出的好的解决方案。

  看书的这段日子应该不是连续的读书,其中是有些打断的,记忆最清晰也应该是最长久的打断就是厦门软件园的实践,不过这是一段愉快的经历。

  这次看书的速度还是可以满意的,不是很慢,接下来看书的计划可以稍稍的提高下速度。不过这次看书的缺陷在于代码都没有进行执行或者自己输入一下,这样印象应该不是很深刻,仅仅是浏览了一下。脑海中的知识还是很容易忘记的。这里还是要闲来无事的时候回顾一下这本书。这本设计模式的进阶书籍应该是Gof的《设计模式》了,这本书最后留下了一个设计模式的类目格式,如表1。这个类目刚好就是Gof《设计模式》一书中提出来总结每个设计模式的方法,而且我觉得这个类目设计的非常的棒,非常的利于记忆和巩固已经学习的设计模式的知识,所以接下来的阅读书籍Gof的《设计模式》,看不懂的时候可以回顾一下head first系列的设计模式。


模式的名称(共享词汇)                                    模式的分类(帮助记忆)

意图(简短的描述该模式的作用,模式的定义)

 

动机(该模式针对解决的问题以及如何解决这个问题的具体场景)

 

适用性(模式可以被应用在什么样的场合)

 

结构(图示显示出参与此模式的类之间的关系)

 

参与者(此设计中所设计到的类和对象在此模式中的责任和角色)

 

协作(参与者如何在此模式中合作)

 

结果(采用此模式后可能产生的效果,包括好与不好)

 

范例代码(提供代码片段,帮助实现)

 

已知应用(已经在真实系统中发现的模式例子)

 

相关模式(此模式和其他模式之间的关系)

 


表1

     学习到的知识简单记录:

     OO设计原则:

     1、封装变化

     2、少用继承,多用组合

     3、针对接口编程,而不是针对抽象编程

     4、为交互对象的松耦合设计而努力

     5、开放-关闭原则。为扩展开放,为变化关闭。

     6、依赖抽象,而不是依赖具体类

     7、只和密友交谈。最简单原则?

     8、好莱坞原则。不要调用我,我来调用你。

     9、类应该只有一个改变的理由。高内聚,只有一个责任任务的类。

设计也应该折中考虑。

     主要设计模式(顺序按照章节的介绍):

     策略模式(鸭子的例子),观察者模式(气象站的例子),装饰对象模式(咖啡厅例子,印象深刻是java中的io利用的就是这种模式),简单工厂,工厂方法,抽象工厂(披萨店的例子,印象深刻的地方在于简单工厂不是设计模式,工厂方法与抽象工厂的不同之处),单例模式(巧克力工厂的例子,印象深刻的地方在于单例模式和多线程结合的时候的3种解决方案),命令模式(遥控器和对象村餐厅的例子,这个模式的印象没有那么的深刻),适配器模式和外观模式(适配器比较简单,为对象添加一个不同的接口。外观的目的是简化接口,这也是印象深刻的地方),模板方法(例子是泡茶和泡咖啡,印象也不是太深刻,实现交给具体的子类),迭代器模式和组合模式(管理集合方面),状态模式(和策略模式很相似,但是目的不同,均是委托给自身的组成对象),代理模式(这个很复杂,首先是从远程代理的变种说起,然后设计到虚拟代理,保护代理)。最后复合模式,具体的结合就是MVC设计模式,结合了策略模式、观察者模式、组合模式。重点讲述的是前面14种。最后是其他的一些设计模式的附录~没有仔细看。

 

posted @ 2013-07-20 12:54  weixliu  阅读(257)  评论(0)    收藏  举报