学习设计模式,就是读圣贤书
什么是设计模式?
设计模式是软件设计中常见问题的典型解决方案,可用于解决代码中反复出现的设计问题。
所以,学习设计模式就是学习经验,学习经验教训,最难的是感同身受。如果还是使用学习语法、算法的方法来学习,很容易迷失。就像小学生参加情感话题的讲座,也不能说完全听不懂,但总感觉学了也记不住,更别说活学活用了。
设计模式还是软件开发人员的专业术语,有着类似成语的功能。软件公司内部开会讨论的时候,或是写文档、写代码注释的时候都能用得上。短短几个字,就能替代一连串繁琐的描述。就像说亡羊补牢的时候对方会知道你要表达的是“出了问题以后想办法补救,免得以后继续受损失,虽然不能挽回损失,但可以减少或杜绝以后再发生类似的状况。”
毫不夸张的说,对于应用程序软件工程师来说,不懂设计模式就是还没入行,毕竟连行话都还听不懂。学各种框架也只能死记硬背,因为自己还不具备基本的架构能力。
如何学习设计模式?
首先要能感同身受,要站在产品设计人员的角度去考虑问题。要认同软件的维护比软件的开发更难,对于软件产品来说,唯一不变的就是变换,客户总是认为软件没有材料的限制,所以会肆无忌惮的提成各种修改意见和升级要求。
要相信金典的设计模式会真正帮助到你,就像是读圣贤书能够懂得做人的道理,可以少走弯路。学习设计模式能够在今后的开发过程中帮你解决编码过程中常见的一些设计问题。

设计模式背后的面向对象设计原则比模式本身更重要。很多教程把设计原则放到开头讲解,我个人感觉这样效果不好。更适合放到具体的设计模式之后,用于总结,巩固知识,就行《Head First设计模式》这本书里做的一样。
封装变化
多用组合,少用继承
针对接口编程,不针对实现编程
为交互对象之间的松耦合而努力
对扩展开放,对修改关闭
依赖抽象,不要依赖具体类
只和朋友交谈
别找我,我会找你
类应该只有一个改变的理由

学习具体设计模式的时候要尊重原著,注意细节,还没有到活学活用的时候。学习过程中,自己写代码的时候,需要严格比对模式的类图。每个设计模式都有它的明确的意图,只有注意细节才能能够区分。
