zoukankan      html  css  js  c++  java
  • 设计模式初步

        最近比较闲,趁着在公司培训的间隙学习了一下设计模式,我比较喜欢的一本书是<<Head First设计模式>>,里面确实将一个个模式讲得比较透彻,采用的是Java语言编写的。最初设计模式好像是四人组GoF这本书引出的,采用的是C++语言。刚看完观察者模式,感觉OO的一些思想确实在设计模式里面得到了体现。自己现在编码还是局限于过程、基于对象的编程思维,面向对象在我的头脑中还没完全形成,这些貌似可以通过设计模式这些OO的设计原则加以实践了。
      下面是我学习设计模式的初步吧,算是一个小结吧:
    一、GoF将设计模式大概分成三类:
    基本上有三类:
    1、创建模式:处理类和对象初始化和配置
    2、结构模式:处理类和对象的接口和实现脱钩
    3、行为模式:处理类和对象的社会之间的动态相互作用


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



    三、几个常见的网站:
    1、http://www.codeguru.com/forum/showthread.php?t=327982
     
    四、推荐的几本好书:
    <<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的例子来学习,会让思路更清晰,学习效果更好。
     
  • 相关阅读:
    2018杭电多校第六场1009(DFS,思维)
    Atcoder Regular Contest 085F(动态规划,线段树)
    IOS各类优化方案集锦
    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化
    oc
    OC 内存管理机制总结
    ARC小知识
    oc常见误区
    常用第三方(分享,支付,二维码,语音,推送)
    UIKit,Core Data , Core Graphics, Core Animation,和OpenGLES框架
  • 原文地址:https://www.cnblogs.com/ccf19881030/p/12004909.html
Copyright © 2011-2022 走看看