学习总结—第三周
要想学习和掌握设计模式,其实知道设计模式的起源和发展的流程即可:
当来了需求或者工作,开始进行开发,开发过程中发现遵循一定的规则或者规律来设计 API 提供功能以及解决特定问题会比较轻松和简单,将其抽象变成一种模式,得到设计模式。
以上是设计模式的起源,由此可以得知:
设计模式是一种可复用的解决方案
设计模式是针对特定问题和场景而言的,需要先梳理清楚需求、问题等,再去思考合理可用的设计模式
设计模式没有银弹,各有利弊,需要根据场景选择最合适的
由此可以进一步推出设计模式的组成部分:
模式的名称
待解决的问题:适用于什么场景解决什么问题
解决方案:设计什么样的元素?元素之间的关系职责和交互?
结论:使用这个模式的利弊
由此可以进一步推导出设计模式的学习方法:
按需学习:设计模式太多了,而且非常抽象,很容易出现一看就懂,一做就忘。最好按需学习,然后在实际工作中反复实践加强理解。
注重理解使用场景和问题。
结合工作场景反复实践加深理解。
常见设计模式
简单工厂
问题:我想要调用一个东西,我知道它的 API,我不想了解它的实现。此外还有一系列跟它相似 API 的东西,但是我只想通过简单的方式去调用。
实际问题:我想要调用一个 sorter 来对我的数据进行排序,我知道所有的 sorter 都会有 sort 方法,但是针对不同数据类型以及排序方式会有不同的排序方法,可是我并不想在乎这些细节。
实现原理:
对于我的 Client 的业务代码,我只知道所有 sorter 遵循一个固定的 interface。对于 sorter 的开发者,他们也需要遵循这个 interface 去开发 sorter。当我调用的时候,我并不想直接调用对应的 sorter,我就可以通过一个中间层去获取这个 sorter 然后根据 interface 的定义去调用即可:
单例模式
问题:整个项目共享一个变量一个实例,都对其进行读取或者一些操作。
实际问题:整个项目中,我想复用一个实例进行统一的数据存取。
实现原理:创建一个 Class 禁止实例化,通过 getInstance() static 方法获取唯一的实例引用,然后进行调用和使用。
其他的模式都按照这种方式去学习、分析、理解即可,这里不再赘述。
版权声明: 本文为 InfoQ 作者【于江水】的原创文章。
原文链接:【http://xie.infoq.cn/article/29eff3a0a893902b2c1a7202a】。未经作者许可,禁止转载。
评论