[toc]
## 什么是设计模式?
> 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、无数工程师实践的代码设计经验的总结,它是面向对象思想的高度提炼和模板化,使用设计模式是为了让代码具有更高的可重用性,更好的灵活性和可拓展性,更易被人阅读和理解。
1. 模式名称:助记名,方便讨论、交流、传播;
1. 问题:该模式是用来解决哪类实际问题,即它的应用场景;
1. 解决方案:设计的组成部分,它们之间的相互关系及各自的职责和协作方式;
1. 效果:使用模式能达到的效果,即对使用条件的权衡取舍。
## 为什么要学习设计模式?
1. 设计模式不一定会让你的代码更`好看`, 但是会让你的代码更`好改`
1. 如果代码不需要修改, 别说设计模式, 连面向对象都变得没有必要了
## 如何学习?
1. 没有`重构`, 就没有`设计模式`
1. 适当的时机, 重新审视并优化自己的代码
1. 熟悉一门面向对象语言
1. 学会使用UML