Skip to content

Commit

Permalink
feat: 架构能力之设计模式
Browse files Browse the repository at this point in the history
  • Loading branch information
feelschaotic committed Feb 12, 2019
1 parent 633fd8a commit 909ef59
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 5 deletions.
60 changes: 60 additions & 0 deletions 2. 架构能力/设计模式/设计模式.md
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)
> 很多设计模式都有变种,我们**不要生搬硬套**,只要理解这个模式根本解决了什么问题,业务中遇到的问题和这个相似吗?有相似的问题你就套上去试试即可。
6 changes: 1 addition & 5 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,11 +91,7 @@

## 二、架构能力

* 设计模式

* Android源码中的设计模式应用

* OOD原则
* [设计模式](2. 架构能力/设计模式/设计模式.md)

* 架构模式

Expand Down

0 comments on commit 909ef59

Please sign in to comment.