🗒️Day27【概念解析】设计模式
00 分钟
2023-10-18
2023-11-9
type
status
date
slug
summary
tags
category
icon
password

整理定义

中文名称:设计模式 / 软件设计模式 / 代码设计模式
英文名称:design mode / design patterns
出处
定义
中国大百科全书
对设计经验的显示表示。每个设计模式描述了一个反复出现的问题及其解法的核心内容,它命名、抽象并标识了一个通用设计结构的关键部分,使之可用来创建一个可复用的设计。
百度百科
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
维基百科
在软件工程中,软件设计模式是针对软件设计中给定上下文中常见问题的通用的、可重用的解决方案。 它不是可以直接转换为源代码或机器代码的成品设计。 相反,它是如何解决可在许多不同情况下使用的问题的描述或模板。 设计模式是程序员在设计应用程序或系统时可以用来解决常见问题的形式化最佳实践。
廖雪峰的官方网站
设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。
 
🔥
说明: 《设计模式》也特指GoF(“四人帮”Gang of Four,指Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides四人)的《设计模式》(1995年出版)是第一次将设计模式提升到理论高度,并将之规范化。本书提出了23种基本设计模式,自此,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。

复述展开

设计模式是软件设计中常见问题的典型解决方案。设计模式是程序员在设计应用程序或系统时可以用来解决常见问题的形式化最佳实践。

设计模式的四个要素

  • 模式名称
  • 问题
  • 解决方案
  • 效果

设计模式的分类

一共23个常用的设计模式,GoF把它们分成了三类:创建型模式、结构型模式、行为模式
创建型模式
  • 工厂方法
  • 抽象工厂
  • 生成器
  • 原型
  • 单例
结构性模式
  • 适配器
  • 桥接
  • 组合
  • 装饰器
  • 外观
  • 享元
  • 代理
行为模式
  • 责任链
  • 命令
  • 解释器
  • 迭代器
  • 中介者
  • 备忘录
  • 观察者
  • 状态
  • 策略
  • 模板方法
  • 访问者
notion image

模式原则

  1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因。每个类应该只负责一项职责,这样可以提高类的内聚性,降低类之间的耦合度。
  1. 开放封闭原则(Open-Closed Principle,OCP):软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。通过使用抽象和接口,可以使系统在不修改现有代码的情况下进行扩展。
  1. 里氏替换原则(Liskov Substitution Principle,LSP):子类应该能够替换掉父类并且不会破坏程序的正确性。子类应该遵循父类的契约和行为,保持一致性。
  1. 依赖倒置原则(Dependency Inversion Principle,DIP):高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于具体实现细节,而是应该依赖于抽象接口。
  1. 接口隔离原则(Interface Segregation Principle,ISP):客户端不应该依赖于它不需要的接口。一个类不应该强迫依赖于它不使用的方法,应该将接口拆分为更小的、更具体的接口。
  1. 迪米特法则(Law of Demeter,LoD):一个对象应该对其他对象有尽可能少的了解。一个类应该只与其直接的朋友进行通信,而不与朋友的朋友进行通信。
  1. 组合/聚合复用原则(Composition/Aggregation Reuse Principle,CARP):优先使用组合和聚合关系,而不是继承关系来实现代码的复用。通过将对象组合或聚合在一起,可以更灵活地构建对象之间的关系,避免继承关系的紧耦合。

理解体会

学习设计模式,关键是学习设计思想,不能简单地生搬硬套,也不能为了使用设计模式而过度设计,要合理平衡设计的复杂度和灵活性,并意识到设计模式也并不是万能的
设计模式也需要按照不同的语言特性来灵活适配使用。设计模式与具体的编程语言并没有直接的关系,它是一种独立于编程语言的设计思想。不过,不同的编程语言可能会有不同的实现方式。例如,在面向对象的编程语言中,我们可以使用类和对象来实现设计模式,而在函数式编程语言中,我们可能需要使用函数和闭包来实现设计模式。
在项目中科学运用设计模式,首先需要对设计模式有深入的理解,知道每种设计模式的适用场景和优缺点。其次,需要根据项目的具体需求和上下文来选择合适的设计模式。最后,需要灵活地使用设计模式,不应该生搬硬套,而应该根据实际情况对设计模式进行适当的修改和扩展。
总的来说,设计模式是我们解决设计问题的一种重要工具,但它并不是万能的。我们需要根据实际情况来灵活地使用设计模式,而不是生搬硬套。同时,我们也需要不断地学习和实践,以提高我们使用设计模式的能力。
 

参考文档:

 

设计模式总结

创建型设计模式

结构型设计模式

行为设计模式

 
 
📌
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
 
上一篇
Day28 【概念解析】工厂方法模式
下一篇
Day26 【概念解析】 WebP

评论
Loading...