设计模式前言

设计模式前言

知道设计模式这玩意其实好几年了,但是因为长期用C做驱动方面的工作,与它少有交集.新项目基于Windows平台开发VR项目,基本上用C++敲代码,接着基于openVR做驱动,官方提供的demo,从代码结构来说,不是很规范,VR目前最大的痛点,个人觉得是在内容和外设上,目前的openVR提供的代码,扩展外设蹩脚,打算用点设计模式的方法整理一下,做好接口,毕竟很多外设还是需要第三方来提供,同时1月份老大出去参加CES了,没安排什么具体的事情, 难得有一周的清闲时间可以做自己想做的事情.原本安排的是每天8小时,10天完成的计划,但是后来大大超出了预期,设计模式看起来好像都懂,但是自己实现时候就会出现很多问题,需要花时间去消化,1月份上班搞了20天+,下班在家搞,过年还搞了几天,还是有所收获,接下来时间打算把这些记录下来,一方面加深理解,另一方便以后用的时候有地方找.
PS:不要小看整理的力量,设计模式圣经的书籍Design Patterns,其中记录的各种各样色设计模式并不是GOF创造出来的,而是收录/整理了许多优秀程序员的杰作而成的.

为什么要学习设计模式

  • 站到巨人肩上
    如GOF的DP上所描述:”不是解决任何问题都要从头做起。他们更愿意复用以前使用过的解决方案。当找到一个好的解决方案,他们会一遍又一遍地使用。这些经验是他们成为内行的部分原因。因此,你会在许多面向对象系统中看到类和相互通信的对象的重复模式。这些模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更好。它们帮助设计者将新的设计建立在以往工作的基础上,复用以往成功的设计方案。一个熟悉这些模式的设计者不需要再去发现它们,而能够立即将它们应用于设计问题中。”,所以,不要去费力的创建一个别人已经创造好的轮子了.想想毕业多年之后,所谓的成长,更多的是学会了做事的套路,设计模式可以看成是代码里的优秀的套路,有利于代码的复用,复用,复用!
  • 利于团队沟通、协作、维护
    当需要与其他同事完成某个项目或模块时,实现的方法和规则多种多样,因人而异,而且咱们多数的程序员同胞,很多情况下比较坚持自己的方法(设计初期是没办法复现出bug,然而没有把bug复现出来,咱们一般是死都不会低头的~,当然对方级别比你高时例外)……多人协作时,使用科学的、广为人知的方法和通用术语,将会减少沟通的成本和出错的可能。也便于其他人接手,维护过别人一时兴起所写的代码的人,那个痛,不多说。
  • 利于理解当前和以后优秀项目
    这些设计模式被广泛的使用到各种各样的大型项目中去,当你在阅读新项目代码时,会看到很多设计模式的影子,当你知道它使用了某个你所知的设计模式时,你会很快的理解这部分代码,而不需要从头阅读。
  • 创建优秀的代码
    设计模式贡献并不仅仅是提出了书上所列出的6大设计模式和23种设计方法,它最大的价值在于培养你有意识的去创建高效、稳定、可复用、易扩展的代码,因为这些设计模式的数量不仅于此,结构和形式随着时间的推移会有所变化。
  • 其他你可能喜欢的用处
    装B,加薪……

设计模式是什么

//每个设计模式描述了在我们开发中一遍又一遍遇到的问题,描述问题的解决方案的核心,你可以重复利用这样的解决方案(设计模式).
"Each pattern describes a problem which occurs over and over again in our environment,
 and then describes the core of the solution to that problem, in such a way that you can
 use this solution a million times over, without ever doing it the same way twice"

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结(并不仅限于书中所指的23种),一般而言,一个设计模式包含四个要素:模式名称、何时使用、组成部分、效果.一个设计模式命名、抽象和确定了一个通用设计结构的主要方面,这些设计结构能被用来构造可复用的面向对象设计。设计模式确定了所包含的类和实例,它们的角色、协作方式以及职责分配。每一个设计模式都集中于一个特定的面向对象设计问题或设计要点,描述了什么时候使用它,在另一些设计约束条件下是否还能使用,以及使用的效果和如何取舍.最主要的思想包含2点:
1.对接口编程.
2.组合优于继承.

设计模式如何学习

这里记录一下自己学习时候学习的一些资料,打包上传到这里了,大小限制的原因,分成2部分上传CSDN(设计模式书籍合集part1,设计模式书籍合集part2)

  • DesignPatterns
    设计模式最权威的书籍之一,附件提供中英文版,建议阅读英文版本,代码使用的语言是smalltalk和C++,,缺点是举的例子不太容易理解.
  • 大话设计模式
    通俗版本的设计模式书籍,通过大鸟和小菜的生活对话的方式来介绍设计模式,容易理解,快速上手,缺点是反复分析时,要反复看他故事部分的内容,是蛮费劲的,这本书的例子使用C#实现代码,附录提供书籍.
  • 设计模式之禅
    与<大话设计模式>类似,难度介于原版之下,大话设计模式之上,例子结合实际项目,所有例子用JAVA实现,附录提供书籍
  • 图说设计模式
    这个链接介绍了常用的设计模式和这些模式的UML图,优点是简洁,缺点是不完整,实现上存在一些不足.
  • 其他链接
    推荐2个老外的设计模式资料链接,Source Make之design patterns,tutorials point之design pointerns
    最好的学习方法就在学习之后,将所学的知识应用到实际当中,实践出真知嘛.最近迷上了长跑,后续会将多数设计模式应用到跑步的场景当中,加深理解,另外正如设计模式作者所述那样不要希望在第一次阅读后就能完全掌握,需要不断的学习,理解,运用:
A word of warning and encouragement: Don't worry if you don't understand
this book completely on the first reading. We didn't understand it all on the
first writing! Remember that this isn't a book to read once and put on a shelf.
We hope you'll find yourself referring to it again and again for design insights
and for inspiration.

后续每个设计模式分为该设计模式的介绍、实例、UML图、结构、优点、缺点6个部分,每个设计模式都提供源代码以及CMakeLists,可以在Visual Studio编译器运行和调试,另外,UML图将用”Enterprise Architect”工具生成,然后修改,修改后的EA工程同时也会上传。

你可能感兴趣的:(设计模式)