一、设计模式(Design pattern)是什么?
设计模式是一套被反复使用、多数人知晓、经过分类编目的代码设计的经验总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
二、为什么要有设计模式?
在软件开发过程中,一个功能的实现方式多种多样,不同方法的可扩展性、可维护性以及复用性都是不一样的。随着一个人对自己项目代码的要求增加,他会逐渐思考和实践出自己的一套方法或者思想,这种方法或思想决定了他设计出的架构或者编写出的代码的质量优劣。设计模式就属于这样一种经验的积累,是由大量优秀的工程师或者架构师总结和提炼的精华,学习好设计模式等于让我们站在了巨人的肩膀上,从一个高的起点出发,可以避免走很多弯路。
三、设计模式的分类
一般情况下,我们把设计模式分成了三大类:
(一)创建型模式(Creational patterns)
创建型模式是为了解决创建对象时候遇到的问题。因为基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度,创建型设计模式有两个主导思想:一是将系统使用的具体类封装起来,二是隐藏这些具体类的实例创建和结合方式。
创建型模式主要有以下五种:
- 简单工厂模式(Simple Factory) 和 工厂方法模式(Factory method)
- 抽象工厂模式(Abstract factory)
- 单例模式(Singleton)
- 建造者模式(Builder)
- 原型模式(Prototype)
GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。
(二)结构型模式(Structural pattern)
结构型模式是通过定义一个简单方法来实现和了解实体间关系,从而简化设计。
- 适配器模式(Adapter)
- 桥接模式(Bridge)
- 合成模式(Composite)
- 装饰者模式(Decorator)
- 表象模式(Facade)
- 享元模式(Flyweight)
- 代理模式(Proxy)
(三)行为型模式(Behavioral pattern)
行为型模式是用来识别对象之间的常用交流模式并加以实现,使得交流变得更加灵活。
- 策略模式(Strategy)
- 模板方法模式(Template method)
- 观察者模式(Observer)
- 迭代器模式(Iterator)
- 责任链模式(Chain of responsibility)
- 命令模式(Command)
- 备忘录模式(Memento)
- 状态模式(State)
- 访问者模式(Visitor)
- 中介者模式(Mediator)
- 解释器模式(Interpreter)
四、各个设计模式之间的关系 (这图可以对设计模式有一定了解后,再回头看会比较清晰)
五、小结
以上共23种设计模式,接下来逐一分享每一个设计模式的详细介绍和在PHP里的应用场景以及案例。
如果有什么疑问或者讲错的地方,欢迎大家留言。