你说设计模式重要吗?重要。
你说设计模式简单吗?也不复杂啊。
你说设计模式容易写吗?还真不容易写!
看过这么多的博文,无非都是一个套路,作者举个通俗易懂又有趣的例子,敲个 Demo,最多再画个类图,最后你是看懂了,但是你会用吗?你发现你真正需要设计模式来重构时脑子一片空白。
啥情况?这是咋回事?
原因大概有2个:
因为设计模式的精妙之处必须在特定的场景才能体现,而很多博文的场景构造非常地生硬,难以引起共鸣。很多作者只是举个浅显易懂的例子带你入门,但设计模式本就是软件开发领域发展到一定程度时总结提炼出来的,它来源于真枪实战的代码,要想体会其精髓,就必须依赖大量的业务场景。
脱离复杂业务去看设计模式是没有意义的。因为脱离了应用场景,即使理解了模式的内容和结构,也学不会在合适的时候应用。所以我们何不通过优秀的开源项目去领悟呢?
如果你不关心代码质量,不在乎解耦,也不想追求扩展性,想着设计模式啊,别人都说要学,别人都说好,所以我要学,面试会被问设计模式,所以必须学……那你研究设计模式干嘛呢?!
学设计模式,无非是为了写出更好的代码,好的代码围绕着简洁、可复用、易维护、可扩展,而这些特征不全是设计模式能解决的。首先你要敢于追求优雅的代码,对一个需求能不断提出问题,不断追求更好的解决方案,在新的解决方案上又挖掘新的问题,其次你要掌握大到应用设计模式的场景、重构烂代码的技巧,小到缩进、命名规范。
《大话设计模式》
本书有两个特色:1. 重视过程,通过对话的形式展示演变过程,让程序不断重构,降低学习门槛;2. 贴合生活,用小故事引出模式,让阅读的过程更轻松。用来入门再好不过了。
《Android 源码设计模式解析与实战》
强烈推荐,如果你想要学习设计模式,我 首推本书!
Android 是一个开源的系统,很多优秀的思想、架构、设计模式必然在它的源码中得以体现,因此我推荐学习 Android 源码,再把优秀的设计和思想运用在 Android 开发上。其次,相信大家都曾下定决心把 23 种设计模式牢记于心,但每次看完之后过一段时间又忘记了,又得重新看。其实不必苦恼难以记住,我们在 Android 中都接触过这些设计模式,只是我们不知道而已。既然我们都接触过,我们只需一一对号入座,对设计模式的记忆就不用死记硬背了!
本书就是把设计模式和 Android 源码来了个结合,对于每一种设计模式都是以 概念 —> Android 源码中的应用 —> 源码要点解析 —> 设计模式实战 这几方面内容来介绍的,在学习设计模式的同时又学习了 Android 源代码。
但切记一点,永远都不要期望通过别人的分析来理解源码! 真正的源码解析需要你脚踏实地去断点追踪源码。所以本书重点在于带领你去思考设计模式,感悟设计模式,只有多加思考和练习才能真正地做到会用,乃至用好。
《重构与模式》
七分重构三分模式,对模式本身叙述不多,主要讲述如何在重构中应用模式,适合有一点基础的小伙伴阅读。
《设计模式 可复用面向对象软件的基础》
经典,但是比较难啃,加上翻译烂,适合有实际的设计经历,对设计模式有自己体会的小伙伴,时不时拿出本书读一下,会有意外收获。
小光的开店之路--设计模式(link:https://www.cdsy.xyz/s/xgkd-shejimoshi/)
强烈推荐,幽默风趣轻松愉快地说明了各个设计模式应用场景的系列文。作者把故事发展与编程中的问题共性抽取出来,进而引入设计模式,解决问题,最后还有个扩展阅读,简直加分!
责任链模式妙用(link:https://www.cdsy.xyz/computer/programme/design_pattern/250313/cd73856.html)
利用策略模式优化过多 if else 代码(link:https://www.cdsy.xyz/computer/programme/design_pattern/250313/cd73855.html)
很多设计模式都有变种,我们不要生搬硬套,只要理解这个模式根本解决了什么问题,业务中遇到的问题和这个相似吗?有相似的问题你就套上去试试即可。