软件设计模式是一种被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模式提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。对于使用不同编程语言的开发和设计人员可以通过设计模式来交流系统设计方案,每一个模式都对应一个标准的解决方案,设计模式可以降低开发人员理解系统的复杂度。
软件设计模式有六大原则,包括开闭原则(对扩展开放,对修改封闭)、里氏代换原则(任何基类可以出现的地方,子类一定可以出现)、依赖倒转原则(针对接口编程,依赖于抽象而不依赖于具体)、接口隔离原则(使用多个隔离的接口,比使用单个接口要好)、迪米特法则(一个实体应当尽量少地与其他实体之间发生相互作用)、合成复用原则(尽量使用合成/聚合的方式,而不是使用继承)。
设计模式可以分为三大类:创建型模式主要用于创建对象;结构型模式主要用于处理类或对象的组合;行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。