20种设计模式 之 c++ 实现

 一个月下来,把常见的20个设计模式好好复习并且逐个用C++实现了一遍,收获还是很大的,很多东西看上去明白了但是真正动手去做的时候发现其实还是不明白——我深知这个道理,于是不敢怠慢,不敢写什么所谓的解释原理的伪代码,不敢说所谓的"知道原理就可以了"……因为我知道,我还还没有资格说这个话,至少对于设计模式而言我还是一个初学者,唯有踏实和实干才能慢慢的掌握到知识。

    在我学习设计模式的过程中,觉得造成理解困难的主要是以下几点,谈一下自己的体会,希望对他人有帮助,不要走上我的老路上,毕竟我花了N长的时间才敢号称自己入门了~~!!-_-:

    1)Gof并不适合于初学者。初学设计模式的一般都是从Gof入门开始学习的,不幸的是,这不是一本好的教科书,而把这本书称为一本奠定了设计模式理论基础的开山之作也许好一些,它把这些散落在各个设计中的常见模式收集起来,从此开始有了一个名词叫做"Design Pattern".说这本书不是一本好的教科书主要是以下的几个原因:a)对设计模式或者说面向对象里面的一些原则性的东西解释的不够多不够彻底,比如"面向接口编程而不是对实现编程","优先采用组合而不是继承"等等,以至于后面看到各个模式的实现的时候很多模式看起来很相似却找不到区别和共性的地方。 b)对各个模式的解释或者举出来的例子不是特别的好,大部分都是为了讲解模式而讲解,没有加入前面提到过的一些基本原则的考量在里面,也就是说:原理性的东西和实现(各个设计模式)脱节。

    2)初学者对语言或者说一些概念理解的不好。拿C++来说,为了做到面向对象需要提供的语言上的支持有继承,多态,封装,虚函数,抽象等等,我以前初学C++的时候,只为了学这些概念而去学习,不知道为什么要提供这些特性,这也是造成我走弯路的重要原因之一。当然,指望一个初学者在初学语言的时候就知道why是一件很困难的事情,也许结合着对设计模式的理解可以帮助你消化这些概念(我就是这样的)。

    3)看不懂UML结构图和时序图,UML图解释的类与类之间的关系,时序图解释的是各个对象的实现方式,两者结合在一起看才能加深对设计模式的理解,事实上,我现在已经可以做到仅仅看这两个图示就掌握一个模式的原理和实现了。

    4)写的代码和参与过的项目不够多。设计模式和很多东西的产生过程都是一样的,首先人们遇到了问题,然后很多人解决了这个问题,于是渐渐的有人出来总结出解决这些问题所要遵守的一些原理和常用方法(我们称之为"模式"),久而久之就形成了一个理论或者说一个学科。而后人在讲述这些理论的时候大都是照本宣科,这对于计算机这样一个强调实践的学科或者说对于设计模式这样一个理论而言要理解起来是很困难的。前人在提出这些理论的时候一些考量,权衡等等只有在你自己遇到了这些问题的时候才能慢慢的体会。有一种说法是,没有写上10W行代码不要空谈什么设计模式大概就是这个意思吧。

    综上所述,造成初学者学习设计模式困难的原因,一个是对基本的原则理解的不够透彻,一个的选的入门教材不合理,还有一个就是对各个模式的表述不明白,再次是实践不够多。

    有几本书籍,我看过,我想可以谈谈我的看法。

    第一本,<<敏捷软件开发:原则,模式与实践>>,这本书对于设计模式最大的贡献在于专门有几个章节讲述了面向对象的几个原则,比如Likov原则,开放封闭原则等等的,这几个章节在我学习设计模式的过程中起了关键的作用,因为当我理解了这些原则之后开始慢慢明白为什么要有纯虚函数提供接口,为什么要有抽象基类,为什么要封装……我开始用这些原则去理解各个设计模式,开始慢慢体会各个模式的区别和共性。

    另外看过的两本书,我觉得性质都一样,如果你缺钱,任选其一吧。第一本是<<设计模式精解>>,第二本是<<深入浅出设计模式>>,都是我花上几个晚上就可以看完的书。这两本的立足点都是以生动的例子结合面向对象的基本原理来讲解模式,我更喜欢前者一些(后者太贵,要不是打5折我才不买呐:)





http://www.chinaitlab.com/c/special/sjms/Index.html

已标记关键词 清除标记
1) 优秀的程序应该是这样的:阅读时,感觉很优雅;新增功能时,感觉很轻松;运行时,感觉很快速,这就需要设计模式支撑。 2) 设计模式包含了大量的编程思想,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,但是不知道怎么使用到真实项目。本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,比如 单例模式的8种实现方式、工厂模式的3种实现方式、适配器模式的3种实现、代理模式的3种方式、深拷贝等 3) 如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧 课程内容和目标 本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式 1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种实现)、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式(3种实现)、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式(3种实现)。行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员能掌握主流设计模式,规范编程风格,提高优化程序结构和效率的能力。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页