设计模式 —— 基础知识

290 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

设计模式的作用

设计模式从何而来

GoF 将模式的概念引入软件工程领域,这标志着软件模式的诞生。软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照模版,软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等

在软件模式中,设计模式是研究最为深入的分支。设计模式用于在特定的条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案。

设计模式是什么

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。

设计模式一般包含模式名称、问题、目的、解决方案、效果等组成要素,其中关键要素是模式名称、问题、解决方案和效果。

  • 模式名称: 通过一两个词来为模式命名,以便更好的理解模式
  • 问题: 描述了应该在何时使用模式,包含了设计中存在的问题以及存在问题的原因
  • 解决方案: 描述了一个设计模式的组成部分,以及这些组成部分之间的关系、各自的职责和协作方式
  • 效果: 描述了模式的优缺点以及在使用模式时应权衡的问题

设计模式有什么用

  • 避免重复性工作,有助于提高设计和开发效率
  • 降低沟通成本、学习成本
  • 提高了系统的可重用性和可扩展性
  • 更加深入地理解面向对象思想

设计模式的原则

  • 单一职责原则 (Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责

  • 开闭原则画 (Open-Closed Principle, OCP):软件实体应对扩展开放,对修改关闭

  • 里氏代换原则 (Liskov Substitution Principle, LSP):所有引用基类对象的地方能够透明的使用其子类的对象

  • 依赖倒转原则 (Dependency Inversion Principle, DIP):抽象不应该依赖于细节,细节应该依赖于抽象

  • 接口隔离原则 (Interface Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总结口

  • 合成复用原则 (Interface Segregation Principle, ISP):尽量使用对象组合,而不是继承来达到复用的目的

  • 迪米特法则 (Law of Demeter, LoD):一个软件实体应当尽可能少的与其他实体发生相互作用