设计模式笔记(25)---总结

pikachu靶场: 暴力破解第四关(token防爆破) Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个 Token 同时将此 Token 返回给客户端。此外,Token 是有时效的,一段时间之后或下一次请求时用户需要重新验证。 阅读详情

断断续续经历了几个月的时间将WebCast的设计模式讲座重新完整听了一遍,并做了笔记,才有了这个设计模式笔记系列,本系列的文章大部分只是给出了基本代码的实现,而并没有去衍生其他的一些例子,笔者认为通过基本的代码实现就能够了解到模式的应用场景,弄出些花哨的例子反倒会让人眼花缭乱,可能并达不到预期的效果,毕竟在实际的应用中我们不是去套用模式。本文作为该系列的最后一篇,将对设计模式做个总结。

首先看下创建型、结构型、行为型这三种类型的模式的解释

 

创建型

 

  • Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。
  • Factory Method, Abstract Factory, Builder都需要一个额外的工厂类来负责实例化“易变对象”,而 Prototype则是通过原型 (一个特殊的工厂类)来克隆“易变对象”。
  • 如果遇到“易变类”,起初的设计通常从FactoryMethod开始,当遇到更多的复杂变化时,再考虑重构为其他三种工厂模式 (Abstract Factory 、Builder 、Prototype )。

 

结构型

 

  • Adapter模式注重转换接口,将不吻合的接口适配对接。
  • Bridge模式注重分离接口与其实现,支持多维度变化。
  • Composite模式注重统一接口,将“一对多”的关系转化为“一对一”的关系。
  • Decorator模式注重稳定接口,在此前提下为对象扩展功能。
  • Façade模式注重简化接口,简化组件系统与外部客户程序的依赖关系。
  • Flyweight 模式注重保留接口,在内部使用共享技术对对象存储进行优化。
  • Proxy 模式注重假借接口,增加间接层来实现灵活控制。

 

行为型

 

  • Template Method模式封装算法结构,支持算法子步骤变化。
  • Strategy模式注重封装算法,支持算法的变化。
  • State模式注重封装与状态相关的行为,支持状态的变化。
  • Memento模式注重封装对象状态变化,支持状态保存/恢复。
  • Mediator模式注重封装对象间的交互,支持对象交互的变化。
  • Chain Of Responsibility模式注重封装对象责任,支持责任的变化。
  • Command模式注重将请求封装为对象,支持请求的变化。
  • Iterator 模式注重封装集合对象内部结构,支持集合的变化。
  • Interpreter模式注重封装特定领域变化,支持领域问题的频繁变化。
  • Observer模式注重封装对象通知,支持通信对象的变化。
  • Visitor模式注重封装对象操作变化,支持在运行时为类层次结构动态添加新的操作。

 

设计模式应用总结

 

  • 设计模式建立在对系统变化点的基础上进行,哪里有变化点,哪里应用设计模式。
  • 设计模式应该以演化的方式来获得,系统的变化点往往是经过不断演化才能准确定位。
  • 不能为了模式而模式,设计模式是一种软件设计的软力量,而非规范标准。不应夸大设计模式的作用。

 

上面的大部分内容都为讲座中的内容,并没有做更多的改动,因为那些概况已经非常简明扼要。软件发展到今天,可以说远远不止这23中模式,只是常常被大家所提及的是这23中经典而已。这些模式的提出时因为软件的需求总是在发生变化,如果说不存在需求的变化,那么设计模式也就没有存在的必要了。这种情况是不可能存在,所以为了在需求变化的时候能够很好的应对,提供代码复用,降低成本就需要应用设计模式。所以说设计模式并不是在软件设计之初就存在,而是随着需求的变化一步一步重构而来的。

设计模式虽然很多,但万变不离其宗,不管怎么变都脱离不了5大设计原则(SRP OCP LSP DIP ISP),掌握了这五大设计原则,勤思考多实践,那么在项目中遇到变化时就可以灵活运行设计模式了。

手把手教你学GPU的KMD专栏--3.4 中断处理机制与优化 记住,中断处理是GPU与CPU通信的"桥梁",没有高效的中断处理,GPU的性能将无法充分发挥。KMD通过"快进快出"原则、事件标志机制、GPU本机围栏等技术,实现高效、低延迟的中断处理。:GPU本机围栏机制允许GPU在满足特定条件(如围栏值达到某个阈值)时才触发中断,而不是每次围栏更新都触发中断,从而显著减少CPU唤醒次数,降低功耗。正如Microsoft GPU架构师在2022年WinHEC大会上指出:"没有好的中断处理,再强大的GPU也会被系统延迟拖垮。:多个GPU设备共享中断,导致中断处理混乱。 阅读详情

相关推荐

历年北京理工大学复试专业综合题

。

A place to record sth. 2万+

25种设计模式笔记

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/4/4-116.html 创建型模式 工厂模式:(建议使用泛型工厂——优雅) 步骤: 工厂单例; 配置文件只读一遍,静态代码块或私有构造方法; 通过配置文件获取对应加载类限定名,加载类并创建实例; 一个对外方法返回实例,达成工厂模式; 注:三层架构层与层

u014394255的博客 2340

NXP MCU CAN波特率(位时间)配置详解

1. 概述 本文将会详细讲解如何设置NXP MCU的CAN波特率、位时间、采样点等属性。 波特率即CAN总线传输频率,位时间是波特率的倒数,例如波特率是500K,那么位时间 = 1 / 500000 = 0.000002s = 2000ns。 我们先来看一下S32K144单片机的EB中与CAN总线波特率相关的可配置参数有哪些: ...

weixin_42967006的博客 9691

Python 入门笔记25——设计模式

Python 入门笔记25——设计模式工厂模式实现单例模式实现 设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式。 本文学习两个最常用的模式:工厂模式和单例模式。 工厂模式实现 工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。 #测试工厂模式 class CarFactory: def create_car(self,brand):

学习爱好者fz的博客 281

国产大模型 coding plan 实战决策指南:GLM、Kimi、豆包、abab 四大模型分层选型与工程落地

大模型辅助编程(coding assistant)正从概念验证走向规模化工程落地,其核心已不再是‘能否生成代码’,而是‘如何在真实开发流程中精准赋能’。理解模型能力边界、匹配技术栈特征、构建分层工作流(L1行级补全/L2函数生成/L3模块重构),是实现稳定提效的关键。GLM系列以工程稳定性见长,适合代码审计与测试生成;Kimi-Max凭借200K超长上下文胜任深度重构与合规审查;豆包响应快、框架适配深,是IDE高频补全的理想选择;abab系列则在IoT固件等跨模态场景中展现独特价值。本文聚焦国产模型在金融、

weixin_32238157的博客 428

BLDC方波控制双闭环Simulink仿真模型

无刷直流电机方波控制双闭环Simulink仿真模型搭建详细教程,包括速度PI环、电流PI环、换向逻辑和受控电压源,仿真结果良好。

m0_57458432的博客 6871

【Java笔记(25)】工厂设计模式与代理设计模式和Annotation整合

0

weixin_43493559的博客 165

YDOOK: ANSYS Maxwell 19 教程7:Maxwell 2D 材料管理 添加新增 永磁材料

使用ANSYS Maxwell 19 添加新增 永磁材料 1. 点击 Add material 按钮后,在左下方的下拉框中下拉选择永磁材料,弹出用材料设置框: 2. 按照下面数据输入 3. 输入 Hc 与 Br/Ap 两项后,其他项的数据将自动计算给出 4. 点击OK后再,为了使得材料属性的完整性,在 Bulk Conductivity 属性行中输入 材料电导率的数值。 ...

YDOOK 1万+

Java笔记(25):设计模式概述

1、设计模式的概述和分类 设计模式: 经验的总结。 A:创建型 创建对象 B:结构型 对象的组成 C:行为型 对象的功能 创建型模式:1)简单工厂模式 2)工厂方法模式 3)设计模式 2、简单工厂模式概述和使用 1 package cn.itcast_01; 2 3 public abstract class Animal { 4 public abstract voi...

weixin_30245867的博客 105

LeRobot 机器人学习(Robot Learning)入门教程(一)

本文介绍了现代机器人学习领域的发展现状与关键技术。随着机器学习进步和大规模机器人数据的普及,机器人技术正从传统基于模型的方法转向数据驱动的学习范式。HuggingFace开发的开源库lerobot实现了端到端集成,支持多种机器人平台和先进算法(强化学习、行为克隆等)。核心创新包括LeRobotDataset标准化格式,统一处理多模态时间序列数据,并支持高效批处理和流式访问。教程涵盖经典机器人学基础、强化学习原理、模仿学习技术和通用模型开发,结合代码示例展示如何构建适应多样化任务的机器人系统。该资源旨在为研究

2506_90492529的博客 1996

OpenAI Error: 403 Country, region, or territory not supported [Python]

从OpenAI的API服务中获取数据时,由于你所在的国家、地区或领土不被支持,因此请求被拒绝了

suiusoar 5670

C#23种设计模式WebCast讲解笔记大全(25讲)

C#面向对象设计模式第一讲:面向对象设计模式与原则   C#面向对象设计模式第二讲:Singleton Pattern单件模式(创建型模式) C#面向对象设计模式第三讲:Abstract Factory Pattern 抽象工厂模式(创建型模式) C#面向对象设计模式第四讲:Builder Pattern生成器模式(创建型模式) C#面向对象设计模式第五讲:Factory Method

Lucker's PowerSpace 1588

基于 Simulink 的三相四线制整流器在三相不平衡负载下的中点电位平衡控制实战教程。

本文介绍了三相四线制整流器在不平衡负载下的中点电位平衡控制方法。首先分析了中点电位漂移的物理机理和控制策略(零序电压注入)。接着详细讲解了Simulink建模步骤:搭建三相四线制主电路、设计平衡控制算法、实现PWM调制。通过对比有无平衡控制的仿真结果,验证了控制方法的有效性。最后提供了工程建议:零序注入需限幅、考虑中性线寄生电感影响、采用稳健的PI参数。该方案能有效抑制中点电位波动,保障三电平系统在不平衡工况下的稳定运行。

MHD0815的博客 60

《Android源码设计模式》读书笔记 (25) 第25章 Android架构之MVC,MVP,MVVM

前言 在说MVC和MVP,MVVM架构之前,我们先得理清楚什么是框架模式,什么时设计模式. 框架模式:通常是对代码的重用,用来对软件的设计进行分工. 设计模式:通常是对设计的重用,是小技巧,对具体的问题提出解决方案,以提高代码复用率,降低耦合度.MVP模式简单总结就是:Presenter与view和数据Dao层先建立链接实现抽象接口,内部实现业务逻辑和数据处理; View只负责数据显示和初始化.数据

qq_28690547的博客 862

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【GeekBand】C++设计模式笔记25_Interpreter_解析器

【GeekBand】C++设计模式笔记25_Interpreter_解析器

qq_38154295的博客 549

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

.NET设计模式(25):设计模式学习笔记

模式是一种对现实世界的概念抽象,建筑模式,设计模式,营销模式,商业运作模式各行各业都有自己的模式。 这里说的设计模式是软件设计里的模式,主要是指面向对象的软件设计。遵照设计模式,可以有效的提高软件的可维护性和可复用性,提高开发软件的效率,避免过多的出现再造轮子的现象。 我学习模式是从知道大名顶顶的四人帮的力作《设计模式》,真正感觉到了设计模式给软件设计所带来的诸多好处。《设计模式》

微软新技术 831

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java初学笔记25-【修饰器设计模式、BufferedReader 和 BufferedWriter、BufferedInputStream 和BufferedOutputStream】

Java初学笔记25九、(模拟)修饰器设计模式十、BufferedReader 和 BufferedWriter1. BufferedReader2. BufferedWriter3. 文件的拷贝十一、BufferedInputStream 和BufferedOutputStream1. BufferedInputStream介绍2. BufferedOutputStream介绍3. 拷贝(音频文件拷贝) 九、(模拟)修饰器设计模式 Reader01 package project.modifier_des

爱吃凉拌辣芒果的博客 804

设计模式笔记_25_访问者模式

package com.maom.design.D_25_Visitor; /** * @Title: D_25_Visitor * @Description: 25_访问者模式 * @Author maohb * @Version 1.0 */ public class D_25_Visitor { public static void main(String[] args...

七点十七 176

设计模式学习笔记 --- 25.访问者模式

在访问者模式(Vistor Pattern)中,我们使用了一个访问者类,它改变元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象的操作; 意图:主要将数据结构与数据操作分离; 主要解决:稳定的数据结构和易变的操作耦合问题; 何时使用:需要对一个...

杨鑫newlife的专栏 535

大话设计模式学习笔记(25)——中介者模式

源码git地址 https://github.com/dlovetco/designMode 有时候类与类之间的关系虽然在设计初期是相互独立的,但是随着代码量的增加很容易在类之间建立起许许多多的关系。此时再去看类图会发现此时的类图已经变成网状结构,违反了我们之前讲过的迪米特法则。解决这个问题的一种可行的办法是把网状结构改成以一个管理类中心的星型结构。 问题提出 以国与国之间的关系为例。所有国...

秋千不会坠的博客 256

【设计模式笔记25】:由状态切换而自动主导行为的「状态模式」

状态模式允许对象在内部状态改变时改变其行为,使对象看起来像是修改了类。该模式通过将状态转换规则封装在状态类中,用多态替代条件判断,解决了传统枚举+switch方式导致的代码重复、违反开闭原则等问题。核心结构包括Context(上下文)、State(状态接口)和ConcreteState(具体状态实现)。以订单状态管理为例,状态模式通过委托状态对象处理业务逻辑,实现状态无感切换,相比传统方式具有更好的扩展性、可维护性和职责分离性,符合开闭原则和单一职责原则。

lyh2004_08的博客 2139

25-MVC设计模式笔记(3)- 登录 Servlet实现

1 登录 Servlet实现 login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录</title> </head> <body> <form actio...

一角残叶的博客 434

设计模式学习笔记(25)——中介者模式

中介者模式 1.介绍:中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 2.意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 3.主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应

Aurora__213的博客 224
上一篇: 设计模式笔记(24)---访问者模式(行为型)
下一篇: AspNet控件开发(1)---入门介绍
oec2003
博客等级 码龄20年 373粉丝 119原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值