设计模式算是一个优秀程序员的必修课。我承认一个程序员不懂设计模式,也可以完成大多数的日常任务。但是你写的代码也仅仅是完成任务了而已,当面临需求的更改,后期维护时你会发现糟糕的设计会让你痛苦不堪。良好的模块设计,可以让系统看上去更优雅,后期的维护和扩展也会更方便。我承认有些朋友没有学过任何模式,也能写出优雅的代码,但那一定是建立在他阅读了大量优秀的代码和大量的思考实践之上的。

设计模式是前辈们无数次的踩坑后总结出来的通用性的软件设计方法,我们学习它也需要我们有过一定的实践经验才行。当你被糟糕的代码虐过之后,痛定思痛,才会真正理解让代码有良好的模块设计是多么好的一种体验。我承认有时候使用合适的模式对当前业务进行设计编码会费一些功夫,当你重构一些代码时还需要承担一些修改后出现未完成测试的BUG跑到线上的尴尬,但当你承受短暂的压力对代码重构后,以后的维护功能会轻松爽快很多。看着清晰优雅的代码,心中也会生出许多作为程序员的骄傲出来。

当然学习设计模式不是一蹴而就的。很多人感觉看完设计模式感觉学会了,但是很快就忘记了,也不知道怎样在实际中去运用。这是正常的,因为对于初学者来说我们没有大量的实际业务经验积累的支撑,所以那些设计模式就像空中阁楼一样虚幻缥缈。我也是看过好几本关于设计模式的书后,然后在实际的业务开发中有过一些运用,才算入门了设计模式。下面介绍一些我看过的设计模式相关的树。

我看的第一本书是《HeadFirst 设计模式》。这本书算是入门设计模式的经典书籍了。看过很多博主写设计模式也是模仿这本书。主要是通过举一些现实中的例子,面包店,咖啡店之类的来讲解设计模式。有点可以让你快速理解设计模式,缺点是感觉学会了,但是无法联系到实际的业务开发中。

为了理论结合实际,曾经也用JavaScript写过一段时间游戏。我发现了这本书,这本书整体还是不错的。里面很多作者在实际开发中实际运用设计模式的实例,读后会对你实际运用设计模式有一些启发。

本人是从事游戏开发工作的,这本书我读了N遍,收益匪浅。代码实例是C++实现的。最初读的时候是作者发布的英文网页版,那会对着谷歌翻译加有道词典算是读完了。感觉这本书写的太好了,里面有大量的实际应用案例,是作者20多年游戏开发经验的总结,干活很多。但是读完后,想着把这本书翻译过来,不过无奈能力和精力有限。后来这本书出了中译版,果断入手。

这本书作者讲了一个完整的游戏案例来讲解如何去运用设计模式来设计游戏的各个模块。总体来说还算讲的清楚,但是有些实例的运用有些牵强。可以选择性的吸收书中的精华思想。

设计模式是门内功,正所谓学而时习之,需要你不断的去复习,在实际开发中多去思考运用才能掌握。我是每隔一年都会温一遍设计模式,温故而知新,每次看都会有不一样的思考。不要为了学而学,那些你真正思考并能实际运用的东西才算是真的学到了。

备注:最近发现一个很好的学习设计模式的网站,图文并茂。链接如下:

https://refactoringguru.cn/https://refactoringguru.cn/

如何才能真正的学会设计模式相关推荐

  1. 教你快速学会设计模式

    附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全: 书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈 ①[Java]学习之路吐血整理技术书 ...

  2. 新手怎样才能快速的学会建网站

    现在我们随处都可以看到网站建设和网站制作的内容,许多人也想学习网站制作这方面的技巧,所以在这个过程当中,新手要怎么样做才能制作好的网站,今天宵云小编就同大家一起来探讨一下网站制作和网站建设方面的技巧和 ...

  3. 轻松学会设计模式——工厂模式

    引子 众所周知,在我们java中,万物都是对象,所有的对象都需要创建,如果创建的时候直接去new一个对象,就会对此对象耦合严重,当我们需要要更换对象的时候,所有new对象的地方都需要重新修改一遍,这显 ...

  4. 学前端有什么好方法,怎么才能更快学会前端?

    Web前端是网站的前台部分,运行在浏览器的PC端或移动端,为用户提供浏览网页.目前Web前端技术广泛应用于网站页面制作.微信.手机app开发.休闲游戏制作等场所. Web开发工程师在市场中的需求量很大 ...

  5. c1语言水平要多久,对普通人来说,一般需要多长时间才能学会一门外语?

    对普通人来说,一般需要多长时间才能学会一门外语? 外语学习,有人觉得容易,有人觉得难,总的来说,即使在互联网广泛普及,外语资料垂手可得的今天,外语学习对大多数人来讲,依然不是一件轻松的事,对许多正在学 ...

  6. 烂代码解决方案:Java设计模式的魅力

    设计模式本身是一种通用场景的解决标准和方案,而不是实际场景开发落地的指导手册.这种通用的解决标准和方案是研发人员在大量的项目中验证和提炼的结果,如果只是学习理论知识,没有经历过大型的项目开发,则很难理 ...

  7. JAVA设计模式 - 创建型模式总结

    JAVA设计模式 - 单例模式 JAVA设计模式 - 工厂方法模式 JAVA设计模式 - 抽象工厂模式 JAVA设计模式 - 原型模式 JAVA设计模式 - 建造者模式 1 . 创建型模式的定义 顾名 ...

  8. 什么是框架,框架和设计模式的关系,为什么要用框架?(转)

    文章出处:http://blog.csdn.net/cjyy1973/archive/2006/02/01/590553.aspx 框架是一个应用程序的半成品.框架提供了可在应用程序之间共享的可覆用的 ...

  9. 霸榜GitHubTrending的设计模式教程出纸质书啦

    设计模式本身是一种通用场景的解决标准和方案,而不是实际场景开发落地的指导手册.这种通用的解决标准和方案是研发人员在大量的项目中验证和提炼的结果,如果只是学习理论知识,没有经历过大型的项目开发,则很难理 ...

  10. 那些年,我们一起写的设计模式(一)——单例模式(Singleton Pattern)

    题记 *度娘上对设计模式(Design pattern)的定义是:"一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结."它由著名的"四人帮",又 ...

最新文章

  1. 遏制企业数据泄露之殇,大咖切磋云安全的攻防之道
  2. 广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B...
  3. 字符流中第一个不重复的字符
  4. Windows环境下QWT安装及配置
  5. Cocos2d-x 3.2 EventDispatcher事件分发机制
  6. 一对经典的时间获取客户/服务器程序
  7. mvc中去除html标签,MVC ValidationMessage 去除上面的Html 标签
  8. jQuery 设计和自定义一个带展开动画效果的导航栏
  9. Android系统开发智能机器人,Android智能机器人详解
  10. dubbo绕过zookeeper直连本地提供方服务
  11. 切图崽的自我修养-[ES6] 编程风格规范
  12. C++二维数组的定义及理解
  13. Intellij IDEA设置类的文件头注释(@Author)(一)
  14. 机器学习之 各种熵详解
  15. form表单,账号注册实例
  16. linux 备份文件脚本,linux 下shell脚本备份文件(示例代码)
  17. php能弹出u盘吗,拔掉U盘为什么要先弹出?知道真相的我眼泪掉下来
  18. 2021第三届计算机能力挑战赛——决赛(java组)真题
  19. 求知讲堂python+人工智能day8
  20. Win11:软件图标丢失

热门文章

  1. 使用AMOS图形建立和检测模型(3)
  2. CAD制图教程之CAD中怎么画剪刀楼梯?
  3. Matlab 2018b + vs2019
  4. T9社区注册流程记录(笔记)
  5. 5. 生信技能树——GEO转录组RNA_seq_GSE162550
  6. asc 点阵数组和计算认识
  7. python爬虫课程大纲_马哥2018python全栈+爬虫+高端自动化课程大纲
  8. 状压DP——子集DP
  9. NOPI修改xlsx文件内容,无法正常打开,提示文件格式或文件扩展名无效
  10. 模拟京东商城登陆HttpRequest