一、设计模式简介
设计模式是一套被反复使用的、容易被他人理解的、可靠的代码设计经验的总结。
设计模式不是Java的专利,我们用面向对象的方法在PHP里也能很好的使用23种设计模式。
那么我们常说的架构、框架和设计模式有什么关系呢?
架构是一套体系结构,是项目的整体解决方案;框架是可复用的半成品软件,是具体程序的代码。架构一般会设计到采用什么样的框架来加速和优化某部分问题的解决,而好的框架代码里合理使用了很多设计模式
二、提炼设计模式的几个原则
开闭原则:模块应对扩展开放,而对修改关闭
里氏替换原则:如果调用的是父类的话,那么换成子类也完全可以运行
依赖倒转原则:抽象不依赖细节,面向接口编程,传递参数尽量引用高层次的类
合成/聚合复用原则:要尽量使用合成/聚合,不要滥用继承
三、设计模式的用处
设计模式能解决:
- 替换杂乱无章的代码,形成良好的代码风格
- 代码易读,工程师都能很容易理解
- 增加新功能不用修改接口,可扩展性强
- 稳定性好,一般不会出现未知的问题
设计模式不能解决:
- 设计模式是用来组织代码的模板,而不是直接调用的库
- 设计模式并非高效,但是代码的可读性和可维护性更重要
四、设计模式分类
- 创建型模式:单例模式、工厂模式(简单工厂、工厂方法、抽象工厂)、创建者模式
- 结构型模式:桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
- 行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、、解释器模式、状态模式、策略模式、职责链模式、访问者模式