设计模式简介

devtools/2024/11/28 19:10:45/

设计模式的八个原则:

  1. 依赖倒置原则:高层次的代码(稳定)不应该依赖低层次的代码(变化),高层次的代码应该依赖于抽象。抽象的代码不应该依赖实现细节,实现细节应该依赖抽象。
  2. 开放封闭原则:类模块应该开放扩展的,而其原先的代码尽量封闭不可改变。
  3. 单一职责原则:一个类应该仅有一个变化的原因,该变化隐含了它的职责,职责太多时会导致扩展时对代码东拉西扯,造成混乱。
  4. 替换原则:子类必须能够替换它的基类(IS-A),继承可以表达类型抽象。
  5. 接口隔离原则:接口应该小而完备,不该强迫用户使用多余的方法。
  6. 优先使用组合而不是继承:继承通常会让子类和父类的耦合度增加、组合的方式只要求组件具备良好定义的接口。
  7. 封装变化点
  8. 针对接口编程,而不是针对实现编程

要解决的问题

软件中面临的挑战来自于变化,如各种业务的变化导致我们去不停的修改软件。设计模式就是解决变化的问题,但是要明确的是,设计模式不是让变化消失,而是缩小变化的范围,如一只小猫在满屋子乱跑,会搞得满屋子都很混乱,但是如果将猫关在笼子里,那么混乱只会发生在笼子里,所以设计模式的核心就是把变化关在笼子里,不让变化漫延的到处都是,就可谓好的代码,好的设计。设计模式的要点是“寻找变化点,然后在变化点处应用设计模式,从而来更好地应对需求的变化”.“什么时候、什么地点应用设计模式”比“理解设计模式结构本身”更为重要。

重构的关键技法

静态->动态
早绑定->晚绑定
继承->组合
编译时依赖->运行时依赖
紧耦合->松耦合

设计模式分类

组件协作:
• Template Method
• Observer / Event
• Strategy
单一职责:
• Decorator
• Bridge
对象创建:
• Factory Method
• Abstract Factory
• Prototype
• Builder
对象性能:
• Singleton
• Flyweight
接口隔离:
• Façade
• Proxy
• Mediator
• Adapter
状态变化:
• Memento
• State
 数据结构:
• Composite
• Iterator
• Chain of Resposibility
 行为变化:
• Command
• Visitor
 领域问题:
• Interpreter


http://www.ppmy.cn/devtools/137739.html

相关文章

C/C++基础知识复习(30)

1) 什么是 C 中的 Lambda 表达式?它的作用是什么? Lambda 表达式: 在 C 中,Lambda 表达式是一种可以定义匿名函数的机制,可以在代码中快速创建一个内联的函数对象,而不需要显式地定义一个函数。Lambda 表…

Vue2中 vuex 的使用

1.安装 vuex 安装vuex与vue-router类似,vuex是一个独立存在的插件,如果脚手架初始化没有选 vuex,就需要额外安装。 yarn add vuex3 或者 npm i vuex3 233 Vue2 Vue-Router3 Vuex3 344 Vue3 Vue-Router4 Vuex4 2. 新建 store/index.j…

Android 用 platform.pk8 和 platform.x509.pem 生成 keystore 系统签名文件

一,背景介绍 最近需要开发一个拥有系统级权限的应用,就了解了下系统应用的签名方式,这里来简单介绍下。 在进行 Android 应用开发的时候,如果开发的是系统应用,那么就需要有系统签名才能正常运行,而系统应用…

高级 SQL 技巧:提升数据库操作效率与灵活性

SQL(Structured Query Language)是关系型数据库管理系统中用于访问和管理数据库的标准语言。在数据库开发和优化过程中,掌握高级 SQL 技巧是提升开发效率和查询性能的关键。本文将介绍一些高级 SQL 技巧,帮助开发者在复杂查询中提高效率、优化性能,并在实际项目中灵活应对…

【电源专题】怎么理解BUCK变换器电感电流平均值等于输出电流?

在文章【电源专题】BUCK电源SW电压的平均值为什么等于输出电压?中我们讲到去看SW波形的时候,我们可以根据SW波形的平均值去看输出电压。其原因是在稳态时,电感电压平均值为0,所以SW电压的平均值与输出电压相同。 那么对于电感电流平均值等于输出电流,这句话我们怎么去理解…

【GPT】力量训练的底层原理?

详细解读力量训练的每一个底层原理 力量训练之所以有效,是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析,并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力(Stress):指训练带来的负…

【Electron学习笔记(二)】基于Electron开发应用程序

基于Electron开发本地应用程序 基于Electron开发本地应用程序前言正文1、创建 pages 目录2、创建 index.html 文件3 、创建 html.css 文件4 、main.js里引入页面5 、运行 start 命令6 、启用开发者模式7 、解决内容安全策略8、完善窗口行为9、配置自动重启,保存后自…

MCU(一) 时钟详解 —— 以 GD32E103 时钟树结构为例

微控制器 (MCU) 的时钟系统是系统运行的核心,它提供了各模块所需的时钟信号。本文以 GD32E103 系列 MCU 为例,详细讲解其 时钟树结构(Clock Tree)。通过理解时钟源、分配与预分频器设置,可以灵活配置系统时钟以实现高性…