forked from feelschaotic/AndroidKnowledgeSystem
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
633fd8a
commit 909ef59
Showing
2 changed files
with
61 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# 设计模式 | ||
|
||
### 前言 | ||
|
||
你说设计模式重要吗?重要。 | ||
|
||
你说设计模式简单吗?也不复杂啊。。。 | ||
|
||
你说设计模式容易写吗?还真不容易写! | ||
|
||
看过这么多的博文,无非都是一个套路,作者举个通俗易懂又有趣的例子,敲个 Demo,最多再画个类图,最后你是看懂了,但是你会用吗?你发现你真正需要设计模式来重构时脑子一片空白。 | ||
|
||
啥情况?这是咋回事? | ||
|
||
原因大概有2个: | ||
|
||
##### 1. 学设计模式脱离了业务场景 | ||
|
||
因为设计模式的精妙之处必须在特定的场景才能体现,而很多博文的场景构造非常地生硬,难以引起共鸣。很多作者只是举个浅显易懂的例子带你入门,但设计模式本就是软件开发领域发展到一定程度时总结提炼出来的,它来源于真枪实战的代码,要想体会其精髓,就必须依赖大量的业务场景。 | ||
|
||
脱离复杂业务去看设计模式是没有意义的。因为脱离了应用场景,即使理解了模式的内容和结构,也学不会在合适的时候应用。所以我们何不通过优秀的开源项目去领悟呢? | ||
|
||
##### 2. 缺少对优雅代码的持续追求 | ||
|
||
如果你不关心代码质量,不在乎解耦,也不想追求扩展性,想着设计模式啊,别人都说要学,别人都说好,所以我要学,面试会被问设计模式,所以必须学……那你研究设计模式干嘛呢?! | ||
|
||
学设计模式,无非是为了写出更好的代码,好的代码围绕着简洁、可复用、易维护、可扩展,而这些特征不全是设计模式能解决的。首先你要敢于追求优雅的代码,对一个需求能不断提出问题,不断追求更好的解决方案,在新的解决方案上又挖掘新的问题,其次你要掌握大到应用设计模式的场景、重构烂代码的技巧,小到缩进、命名规范。 | ||
|
||
### 精彩的设计模式书籍 | ||
|
||
- [《大话设计模式》](https://github.com/feelschaotic/AndroidKnowledgeSystem/tree/master/2.%20架构能力/设计模式/大话设计模式.pdf) | ||
> 本书有两个特色:1. 重视过程,通过对话的形式展示演变过程,让程序不断重构,降低学习门槛;2. 贴合生活,用小故事引出模式,让阅读的过程更轻松。用来入门再好不过了。 | ||
- [《Android源码设计模式解析与实战》](https://github.com/feelschaotic/AndroidKnowledgeSystem/tree/master/2.%20架构能力/设计模式/Android源码设计模式解析与实战.pdf) | ||
> **强烈推荐**,如果你想要学习设计模式,我**首推本书**! | ||
> | ||
> Android 是一个开源的系统,很多优秀的思想、架构、设计模式必然在它的源码中得以体现,因此我推荐学习 Android 源码,再把优秀的设计和思想运用在 Android 开发上。其次,相信大家都曾下定决心把 23 种设计模式牢记于心,但每次看完之后过一段时间又忘记了,又得重新看。其实不必苦恼难以记住,我们在 Android 中都接触过这些设计模式,只是我们不知道而已。既然我们都接触过,我们只需一一对号入座,对设计模式的记忆就不用死记硬背了! | ||
> | ||
> 本书就是把设计模式和 Android 源码来了个结合,对于每一种设计模式都是以 概念 —> Android 源码中的应用 —> 源码要点解析 —> 设计模式实战 这几方面内容来介绍的,在学习设计模式的同时又学习了 Android 源代码。 | ||
> | ||
> 但切记一点,**永远都不要期望通过别人的分析来理解源码!** 真正的源码解析需要你脚踏实地去断点追踪源码。所以本书重点在于带领你去思考设计模式,感悟设计模式,只有多加思考和练习才能真正地做到会用,乃至用好。 | ||
- [《重构与模式》扫描版](https://github.com/feelschaotic/AndroidKnowledgeSystem/tree/master/2.%20架构能力/设计模式/重构与模式_扫描版.pdf) | ||
- [《重构与模式》图片版](https://github.com/feelschaotic/AndroidKnowledgeSystem/tree/master/2.%20架构能力/设计模式/重构与模式_图片版.pdf) | ||
> 七分重构三分模式,对模式本身叙述不多,主要讲述如何在重构中应用模式,适合有一点基础的小伙伴阅读。 | ||
- [《设计模式 可复用面向对象软件的基础》]() | ||
> 经典,但是比较难啃,加上翻译烂,适合有实际的设计经历,对设计模式有自己体会的小伙伴,时不时拿出本书读一下,会有意外收获。 | ||
### 辅助你理解设计模式的博文 | ||
|
||
- [小光的开店之路--设计模式](https://www.jianshu.com/nb/7614011) | ||
> **强烈推荐**,幽默风趣轻松愉快地说明了各个设计模式应用场景的系列文。作者把故事发展与编程中的问题共性抽取出来,进而引入设计模式,解决问题,最后还有个扩展阅读,简直加分! | ||
### 设计模式变种 | ||
|
||
- [责任链模式妙用](https://juejin.im/post/5be508ece51d45054a71e64d) | ||
- [利用策略模式优化过多 if else 代码](https://juejin.im/post/5c5172d15188256a2334a15d) | ||
> 很多设计模式都有变种,我们**不要生搬硬套**,只要理解这个模式根本解决了什么问题,业务中遇到的问题和这个相似吗?有相似的问题你就套上去试试即可。 | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -91,11 +91,7 @@ | |
|
||
## 二、架构能力 | ||
|
||
* 设计模式 | ||
|
||
* Android源码中的设计模式应用 | ||
|
||
* OOD原则 | ||
* [设计模式](2. 架构能力/设计模式/设计模式.md) | ||
|
||
* 架构模式 | ||
|
||
|