设计模式初步

    最近比较闲,趁着在公司培训的间隙学习了一下设计模式,我比较喜欢的一本书是<<Head First设计模式>>,里面确实将一个个模式讲得比较透彻,采用的是Java语言编写的。最初设计模式好像是四人组GoF这本书引出的,采用的是C++语言。刚看完观察者模式,感觉OO的一些思想确实在设计模式里面得到了体现。自己现在编码还是局限于过程、基于对象的编程思维,面向对象在我的头脑中还没完全形成,这些貌似可以通过设计模式这些OO的设计原则加以实践了。

  下面是我学习设计模式的初步吧,算是一个小结吧:

一、GoF将设计模式大概分成三类:

基本上有三类:

1、创建模式:处理类和对象初始化和配置

2、结构模式:处理类和对象的接口和实现脱钩

3、行为模式:处理类和对象的社会之间的动态相互作用

二、常见的23种设计模式:

三、几个常见的网站:

1、http://www.codeguru.com/forum/showthread.php?t=327982

2、http://en.wikibooks.org/wiki/C++_Programming/Code/Design_Patterns

四、推荐的几本好书:

<<Head First设计模式>>   这本书对初学者来说比较好,一章节专门讲一个模式,最好熟悉Java,因为这个书是用Java写的,不过对于C++、C#程序员来说也可以的。

<<大话设计模式>>   国人用C#写的一本书,比较幽默风趣。

<<设计模式  可复用面向对象软件的基础>>  这本书涵盖了所有的23个基础设计模式,1995年出版,揭开多了设计模式的序幕。

<<敏捷软件开发:原则、模式与实践>>  这本书很好地介绍了软件工程、敏捷开发、极限编程、UML和设计模式等方面的内容,不是纯粹讲解设计模式的。

五、设计模式中的几个OO原则

1、封装变化

2、多用组合,少用继承

3、针对接口编程,不针对实现编程(这里的接口是广义上的,在Java中可以是接口interface也可以是抽象类abstract class)

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

5、开放-封闭原则:类应该对扩张开放,对修改关闭

6、依赖抽象,不要依赖具体类(这个在抽象工厂模式中有所体现)

六、从卓越亚马逊网上书店看到了对于设计模式的几本书的评价,这里记录如下,可以当做参考吧。

国内目前能够找到的有关设计模式的书按照出版时间排列有以下几本(含点评): * GoF的《设计模式》1994年英文版出版,2000.09中文版出版 大师之作,经典作品,言简意赅,归纳充分。可惜中文版翻译质量很低,有些句子不通顺,好像是机器翻译的,有个别难译的句子干脆没有翻译(如Chain of responsibility一章的适用性一节的and the handler isn't known a priori.这一句就没有翻译),另外代码是C++的,较难懂;还有就是出版时间较早,实例代码对于如今国内的应用开发不大实用。 * 《Java与模式》2002.10出版 国人早期的设计模式的书籍,勇气可嘉,但是头几章试图用中国的传统文化阐述设计模式的道理,让人感到云里雾里的,加深了对设计模式的神秘感,很快就打消了阅读的念头 * 《Head First设计模式》2004.10英文版,2007.09中文版 开创了设计模式通俗读物的先河,老外们很喜欢,中文版翻译得也不错,用Java写的代码,但是感觉其中的例子(比如披萨的制作)不大和国人的胃口,另外有些人不喜欢书里卡通的风格 * 《大话设计模式》2007.12出版 开创了国内设计模式通俗读物的先河,用C#写的代码,感觉其中一些例子不大实用和贴切,比如学雷锋和追女孩。 * 《设计模式之禅》2010.03出版 行文活泼,深入浅出,引人入胜,包含了大量的和较新的使用Java灵活运用设计模式的经验,用Java写的代码,代码短小精悍,但有些例子不大实用和贴切,如女娲造人。 * 《研磨设计模式》2010.11出版 文风相对来说较严谨,同样包含了大量的和较新的使用Java灵活运用设计模式的经验,用Java写的代码,代码更多地取材于实际的项目,更加实用。 设计模式的学习成本较高,在有限的时间里,感觉使用下面的方法能够最大限度的加快学习的步伐(适用于Java程序员): 1. 先通读《设计模式之禅》,打消设计模式的神秘感,读完后,有时间,还可以阅读《研磨设计模式》 2. 再阅读GoF的《设计模式》(有条件可以直接阅读英文版),可以不关注其中C++的代码,而主要关注该书对各种模式的概念上的介绍和归纳对比,特别关注第一章引言,每个设计模式的意图、适用性、结构类图、时序图、参与者、协作、效果和相关模式,第六章结论,图1-1设计模式之间的关系,1.6.7节导致重新设计的一般原因归纳,表1-2设计模式所支持的设计的可变方面的归纳,1.7怎样选择设计模式,1.8怎样使用设计模式。 3. 再利用《设计模式之禅》或《研磨设计模式》的相关Java实例代码,结合GoF的结构类图,找出Java代码中的参与者,便于记忆 总之,用GoF对于设计模式概念的论述和归纳,结合《设计模式之禅》和《研磨设计模式》的Java的例子来学习,会让思路更清晰,学习效果更好。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Python中使用Linux epoll

    原文链接:http://scotdoyle.com/python-epoll-howto.html

    ccf19881030
  • matlab中的曲线拟合与插值

    曲线拟合与插值 在大量的应用领域中,人们经常面临用一个解析函数描述数据(通常是测量值)的任务。对这个问题有两种方法。在插值法里,数据假定是正确的,要求以某种方法...

    ccf19881030
  • VMware下的Linux系统中Windows的共享目录,不支持创建软连接

    【问题】 在编译VMware下的Linux系统对从Windows中共享过来的文件,进行编译的时候,遇到: ln: creating symbolic lin...

    ccf19881030
  • 设计模式分类

    Introduction 根据目的和范围,设计模式可以分为五类。按照目的分为:创建设计模式,结构设计模式,以及行为设计模式。按照范围分为:类的设计模式,以及对象...

    wangxl
  • Java设计模式系列-前言

    比如医药行业,就有自己的设计模式.假设一个人感冒了,需要去药店购买感冒药,这个感冒药就是设计模式的一个很好体现,为什么这么说呢?我们来分析一下

    框架师
  • 设计模式是什么?

    中国人有不破不立的思维,远的如秦始皇焚书坑儒、项羽火烧阿房宫,近的如破“四旧”.正是由于有了这样的思想,于是,能改的就改,不能改的就推翻重写,没有一...

    小诸葛
  • 永远无法在游泳池里学会海战--《实战Python设计模式》新书介绍

    《实战Python设计模式:实战Python设计模式:可复用面向对象软件开发实践 》是本人根据自己在实际开发工作中积累的有关Python语言,设计模式的经验,想...

    面向对象思考
  • 永远无法在游泳池里学会海战--《实战Python设计模式》新书介绍

    《实战Python设计模式:实战Python设计模式:可复用面向对象软件开发实践 》是本人根据自己在实际开发工作中积累的有关Python语言,设计模式的经验,想...

    面向对象思考
  • 图解Java设计模式之设计模式面试题

    4)Spring中原型bean的创建,就是原型模式的应用 5)代码分析 + Debug源码

    海仔
  • JavaScript设计模式第0篇:前言

    23种设计模式,大家没用过,肯定也都听过。作为一名前端开发工程师,我们有没有必要去学习和使用设计模式,我个人认为,是有必要的。

    liuxuan

扫码关注云+社区

领取腾讯云代金券