设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
它是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个概念最早是由 Christopher Alexander 在其所著《建筑模式语言》一书中提出,他指出:每一个环境都有它所固有的问题,而这些问题,在该环境下已被解决过,因此,当再遇到类似问题时,则可以采用这些解决方案的一种,这就是“模式”。
使用设计模式可以使代码更加简洁、易懂、易维护、易复用,并且可以提高代码的可扩展性和灵活性。
同时,设计模式也可以帮助开发人员在面对某些特定的场景时,能够更好地解决问题,避免重复造轮子。
根据设计模式的作用范围,一般分为三类:
1. 创建型模式:主要用于对象的创建,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、单例模式和原型模式。
2. 结构型模式:主要用于处理类或对象的组合,包括适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式和享元模式。
3. 行为型模式:主要用于描述对象间的通信,包括模板方法模式、策略模式、命令模式、职责链模式、状态模式、观察者模式、中介者模式、迭代器模式、访问者模式和备忘录模式。