设计模式---行为型模式(三)

Hcaptcha验证码破解深度解析:从环境检测到n值算法的攻防实战 本文深入解析Hcaptcha验证码的攻防技术,从环境检测到n值算法的全面突破策略。详细介绍了浏览器指纹模拟、图像识别工程化解决方案及协议层逆向分析,为安全研究人员提供高效破解Hcaptcha的实战指南。 阅读详情

状态模式(State Pattern)

概念

状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变其行为,看起来就像修改了它的类一样。

通俗理解:人在不同状态下行为不同,开心时爱说话,生气时不理人。状态模式就是把这些"状态"变成对象,让状态自己决定该做什么。

核心思想

面向对象编程的精髓体现:将状态对象化。

  • 传统方式:状态是简单的标识(如字符串、枚举),行为通过if-else判断
  • 状态模式:状态是有行为的对象,状态对象自己决定该做什么

核心角色

  • Context(上下文):维护一个具体状态对象的实例,这个实例定义当前状态
  • State(抽象状态):定义一个接口,封装与Context的一个特定状态相关的行为
  • ConcreteState(具体状态):每个子类实现一个与Context的一个状态相关的行为

代码对比

传统方式 - if-else地狱:

public class Order {
    private String status;  // "PENDING", "PAID", "SHIPPED", "COMPLETED"
    
    public void pay() {
        if (status.equals("PENDING")) {
            // 支付逻辑
            status = "PAID";
        } else {
            throw new IllegalStateException("当前状态不能支付");
        }
    }
    
    public void ship() {
        if (status.equals("PAID")) {
            // 发货逻辑
            status = "SHIPPED";
        } else {
            throw new IllegalStateException("当前状态不能发货");
        }
    }
    
    // 每个操作都要判断状态,代码重复且难以维护
}

使用状态模式:

// 状态接口
interface OrderState {
    void pay(Order order);
    void ship(Order order);
}

// 待支付状态
class PendingState implements OrderState {
    public void pay(Order order) {
        // 支付逻辑
        order.setState(new PaidState());
    }
    
    public void ship(Order order) {
        throw new IllegalStateException("未支付不能发货");
    }
}

// 订单类
public class Order {
    private OrderState state = new PendingState();
    
    public void pay() {
        state.pay(this);  // 委托给状态对象
    }
    
    public void ship() {
        state.ship(this);
    }
}

与中介者模式对比

这两个模式容易混淆,但本质不同:

维度中介者模式状态模式
控制方式中心化控制(中介者决定)去中心化控制(状态自己决定)
对象化的是交互逻辑状态行为
关注点对象间如何协作当前状态该做什么
适用场景多对象协作、交互复杂状态转换复杂、路径多

举例说明:

  • 中介者:订单流程需要协调库存、支付、通知等多个服务 → 用中介者统一编排
  • 状态模式:订单本身有多个状态(待支付、已支付、已发货),每个状态行为不同 → 用状态模式

优缺点

优点:

  • 消除了庞大的条件分支语句
  • 符合开闭原则,新增状态无需修改现有代码
  • 符合单一职责原则,每个状态类只负责一个状态的行为

缺点:

  • 会增加类的数量
  • 状态转换逻辑分散在各个状态类中,不够集中

适用场景

  • 对象的行为取决于它的状态,且状态经常变化
  • 代码中包含大量与状态相关的条件语句

策略模式(Strategy Pattern)

概念

策略模式是一种行为型设计模式,它定义了一系列算法,把它们一个个封装起来,并且使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端。

通俗理解:去北京可以坐飞机、坐高铁、开车,这些都是"策略"。你可以根据时间、预算、舒适度选择不同的策略,但目标都是到达北京。

核心思想

把"做什么"(目标)和"怎么做"(算法)分开,让"怎么做"可以灵活变化。

关键点:

  • 目标是固定的(到达北京)
  • 实现方式可以变化(飞机、高铁、汽车)
  • 客户端可以自由选择策略

核心角色

  • Context(上下文):持有策略对象的引用,负责调用策略
  • Strategy(策略接口):定义所有策略的公共接口
  • ConcreteStrategy(具体策略):实现具体的算法逻辑

实际应用场景

场景:支付方式选择

// 策略接口
interface PaymentStrategy {
    void pay(double amount);
}

// 具体策略
class AlipayStrategy implements PaymentStrategy {
    public void pay(double amount) {
        System.out.println("使用支付宝支付:" + amount);
    }
}

class WechatStrategy implements PaymentStrategy {
    public void pay(double amount) {
        System.out.println("使用微信支付:" + amount);
    }
}

// 上下文
class PaymentContext {
    private PaymentStrategy strategy;
    
    public void setStrategy(PaymentStrategy strategy) {
        this.strategy = strategy;
    }
    
    public void pay(double amount) {
        strategy.pay(amount);
    }
}

// 使用
PaymentContext context = new PaymentContext();
context.setStrategy(new AlipayStrategy());
context.pay(100);  // 使用支付宝

context.setStrategy(new WechatStrategy());
context.pay(200);  // 切换到微信

优缺点

优点:

  • 算法可以自由切换
  • 避免使用多重条件判断
  • 扩展性好,符合开闭原则

缺点:

  • 策略类数量增多
  • 客户端必须知道所有策略类

模板方法模式(Template Method Pattern)

概念

模板方法模式是一种行为型设计模式,它在父类中定义了一个算法的骨架(模板),允许子类在不改变算法整体结构的情况下,重写算法的某些特定步骤。

通俗理解:就像做菜的流程:备料 → 烹饪 → 装盘。这个流程是固定的(模板),但每道菜的具体做法不同(子类实现)。

核心思想

双重目的:

  1. 流程控制(最核心):定义算法骨架,保证流程不被破坏
  2. 代码复用(重要收益):提取公共代码,避免重复

模板模式的结构

AbstractClass (抽象类)
├── templateMethod() - 模板方法(final,定义算法骨架)
├── step1() - 抽象方法(子类必须实现)
├── step2() - 抽象方法(子类必须实现)
└── step3() - 钩子方法(可选实现,默认空实现)

ConcreteClass (具体类)
└── 实现抽象方法,提供具体步骤

代码示例

// 抽象类
abstract class DataProcessor {
    // 模板方法(final防止被重写)
    public final void process() {
        readData();      // 步骤1
        processData();   // 步骤2
        writeData();     // 步骤3
        
        if (needCleanup()) {  // 钩子方法
            cleanup();
        }
    }
    
    protected abstract void readData();     // 子类必须实现
    protected abstract void processData();  // 子类必须实现
    protected abstract void writeData();    // 子类必须实现
    
    // 钩子方法(可选实现)
    protected boolean needCleanup() {
        return false;
    }
    
    protected void cleanup() {
        // 默认空实现
    }
}

// 具体类
class CsvProcessor extends DataProcessor {
    protected void readData() {
        System.out.println("读取CSV文件");
    }
    
    protected void processData() {
        System.out.println("处理CSV数据");
    }
    
    protected void writeData() {
        System.out.println("写入CSV文件");
    }
}

与策略模式对比

这两个模式经常被混淆,但目的完全不同:

维度模板方法模式策略模式
目的保护流程、复用代码算法可替换
流程固定流程,不可变没有固定流程
实现继承(父类定义流程)组合(注入策略对象)
重点流程的稳定性算法的灵活性

举例说明:支付场景

使用模板方法:

abstract class PaymentService {
    public final void pay(Order order) {
        validateOrder(order);    // 固定流程
        deductBalance(order);    // 固定流程
        createPaymentRecord(order);  // 固定流程
        sendNotification(order); // 固定流程
    }
    
    protected abstract void deductBalance(Order order);  // 差异部分
}

class AlipayService extends PaymentService {
    protected void deductBalance(Order order) {
        // 支付宝扣款逻辑
    }
}

优势:流程被保护,所有支付方式都必须经过完整流程,不会遗漏步骤。

使用策略模式:

interface PaymentStrategy {
    void pay(Order order);
}

class AlipayStrategy implements PaymentStrategy {
    public void pay(Order order) {
        // 需要自己写完整流程
        validateOrder(order);
        deductBalance(order);
        createPaymentRecord(order);
        sendNotification(order);
        // 容易遗漏步骤,且代码重复
    }
}

核心价值

模板方法模式的核心价值在于流程保护:

  • 确保关键步骤不被遗漏
  • 确保步骤执行顺序正确
  • 提取公共逻辑,避免重复

优缺点

优点:

  • 封装不变部分,扩展可变部分
  • 提取公共代码,便于维护
  • 行为由父类控制,子类实现

缺点:

  • 每个不同实现都需要一个子类,类数量增加
  • 增加了系统复杂度

适用场景

  • 多个类有相同的方法,且逻辑基本相同
  • 重要、复杂的算法,可以把核心算法设计为模板方法
  • 重构时,把相同代码抽取到父类

访问者模式(Visitor Pattern)

概念

访问者模式是一种行为型设计模式,它允许你在不修改已有类结构的前提下,定义作用于这些类元素的新操作。简单来说,就是把数据结构和数据操作分离开来。

通俗理解:博物馆的展品是固定的,但不同的参观者(艺术家、历史学家、商人)看同一个展品会关注不同的方面。展品不需要改变,只是访问者的视角不同。

核心思想

让操作可以独立于数据结构变化,通过双重分派实现二维多态。

关键理解:

  • 一维多态:不同的对象调用同一个方法,表现不同(普通的多态)
  • 二维多态:不同的对象 × 不同的操作 = 多种组合(访问者模式)

核心角色

  • Visitor(访问者接口):声明访问各种元素的方法
  • ConcreteVisitor(具体访问者):实现具体的访问操作
  • Element(元素接口):定义accept方法,接受访问者
  • ConcreteElement(具体元素):实现accept方法
  • ObjectStructure(对象结构):存储元素集合,提供遍历接口

生动的案例:博物馆参观

场景设定:

展品(Element):稳定不变
- 青铜器
- 瓷器
- 书画

参观者(Visitor):各有所需
- 艺术家 → 看艺术价值
- 历史学家 → 看历史价值
- 商人 → 看商业价值

这就是二维多态:

           艺术家    历史学家    商人
青铜器      ✓         ✓         ✓
瓷器        ✓         ✓         ✓
书画        ✓         ✓         ✓

同一个展品,不同的人看到不同的东西,产生9种不同的结果。

双重分派机制

第一次分派:根据Element类型(青铜器、瓷器、书画)
第二次分派:根据Visitor类型(艺术家、历史学家、商人)

// 元素接口
interface Artifact {
    void accept(Visitor visitor);
}

// 具体元素
class BronzeWare implements Artifact {
    public void accept(Visitor visitor) {
        visitor.visit(this);  // 第一次分派:确定是青铜器
    }
}

// 访问者接口
interface Visitor {
    void visit(BronzeWare bronze);
    void visit(Porcelain porcelain);
}

// 具体访问者
class Artist implements Visitor {
    public void visit(BronzeWare bronze) {
        // 第二次分派:艺术家看青铜器
        System.out.println("欣赏青铜器的造型美");
    }
    
    public void visit(Porcelain porcelain) {
        System.out.println("欣赏瓷器的釉色美");
    }
}

适用场景

适合使用访问者模式的情况:

  • ✅ 数据结构稳定(展品不常变)
  • ✅ 操作经常变化(参观者视角多样)
  • ✅ 需要对一组对象进行很多不同的操作

不适合使用的情况:

  • ❌ 数据结构经常变化(每次加新展品,所有访问者都要改)
  • ❌ 操作比较固定

优缺点

优点:

  • 符合单一职责原则,操作集中在访问者中
  • 增加新操作很容易,只需增加新访问者
  • 访问者可以累积状态

缺点:

  • 增加新元素很困难,需要修改所有访问者
  • 破坏了封装性,访问者需要访问元素的内部状态

实际应用

  1. 编译器的AST遍历(语法树节点稳定,操作多样)
  2. 报表系统(数据结构固定,输出格式多样)
  3. 对象序列化(对象结构稳定,序列化方式多样)
基于 YOLOv26 的校园安全监控系统:多场景应用 本文提出了一种基于YOLOv26的校园安全监控系统,采用多场景应用架构实现对校园安全的智能监测。系统核心技术包括YOLOv26目标检测、DeepSORT目标跟踪、区域安全定义和行为分析等模块,通过边缘计算平台实现实时处理。研究构建了包含多种校园场景的专业数据集,并采用数据增强技术提升模型性能。系统可检测人员、车辆和物品等目标,分析其行为轨迹,评估安全风险并触发告警。实验结果表明,该系统能有效识别校园安全隐患,为安全管理提供智能化解决方案。 阅读详情

相关推荐

【Qt】Qt5.15在线安装避坑指南:从代理配置到组件选择的完整实践

本文详细介绍了Qt5.15在线安装的全流程避坑指南,包括代理配置、组件选择和常见问题解决方案。通过使用Fiddler工具和国内镜像源,可显著提升下载速度。文章还提供了组件选择的黄金法则和安装后的验证步骤,帮助开发者高效完成Qt5.15的安装与配置。

weixin_42550052的博客 271

设计模式(三)- 行为型设计模式

行为型设计模式(十一种):策略模式、模板方法模式、观察者模式、迭代模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 一、策略模式

淦淦淦! 531

手把手教你用UNI-MOL进行分子性质预测:从3D构象到实战结果

本文提供了使用UNI-MOL进行分子性质预测的完整实战指南。通过详细的环境搭建、3D构象生成、模型加载与微调步骤,手把手教你构建端到端的预测流水线。文章重点解析了如何利用UNI-MOL的3D分子表示学习能力,超越传统2D方法,实现对溶解度、活性等性质的更精准预测,并探讨了结果解读与模型分析方法。

weixin_29164091的博客 117

设计模式三 行为型模式

尚学堂视频笔记 行为型模式:关注系统中对象之间的相互交互,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责 命令、解释、访问者用的较少,共11种 责任链模式:chain of responsibility 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象卓哥判断是否有能力处理该请求,如果能处理则处理,如果不能则传递给链上的下一个对象。 比if ...

zx1323的博客 498

企业老板管理者,如何监控员工的电脑屏幕?

老板监控员工电脑,需要知道员工开机后的上网行为来及时了解到员工工作情况,及时发现上班不良行为员工,及时淘汰低价值员工。 文章目录iMonitor EAM一、计算机系统日志二、具体功能介绍1.屏幕记录2.键盘记录总结 iMonitor EAM 怎么监控员工电脑,我们需要用到第三方软件,2021年最新版本软件-iMonitor EAM,软件分管理端和客户端,管理端在管理者电脑登录,客户端在员工电脑双击安装就可以,安装中不用任何设置的,客户端安装到员工电脑后也是隐藏的,不会有任何弹窗和警告信息,是无法发现和删

iMonitorSoft的博客 2180

abaqus wcm插件下载_Abaqus随机短纤维增强复合材料建模插件

文末附Abaqus随机短纤维增强复合材料建模插件下载链接前言短纤维增强复合材料相对于长纤维增强复合材料来说更容易制备,且短纤维的填充性能略有改善,可制造复杂产品,广泛应用于车辆、航空航天、建筑等行业,对短纤维增强复合材料进行细观力学分析,可对其宏观力学性能进行预测、分析破坏机理等。接下来对随机短纤维增强复合材料建模插件进行介绍。NO.1 【算法简介】难点一:此插件核心在于判断生成的纤维是...

weixin_39974882的博客 2833

设计模式(三)——行为型模式

行为型模式 核心作用:关注系统中对象之间的相互交互,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共有11种模式。 分类:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。 责任链模式 chain of responsibility 定义 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,不能,则传递给链上的下一个对象。 迭代器

暴走猿人的博客 308

【微信小程序】微信小程序 manifest.json 配置 ES6 转 ES5 开关:3步让你的代码兼容性更强

ES6(ECMAScript 6)是 JavaScript 的最新标准,引入了许多新的语法和特性,如箭头函数、模板字符串、解构赋值等。然而,不是所有的环境都支持 ES6,特别是旧版本的浏览器和一些特定的运行环境。为了确保代码的兼容性,我们需要将 ES6 代码转换为 ES5 代码。通过本文的详细讲解,相信你已经学会了如何在文件中配置微信小程序的 ES6 转 ES5 开关。这个小小的配置步骤能够显著提高代码的兼容性和稳定性。如果你有任何问题或需要进一步的帮助,欢迎随时留言交流。

java专栏 1362

设计模式在C++中的实战应用(三):行为型模式

摘要:C++行为型设计模式实战 本章重点讲解五种常用行为型设计模式在C++中的实现与应用: 观察者模式:实现"一对多"订阅-通知机制,示例为股票行情系统,主题(股票)状态变化时自动通知所有观察者(投资者)。 策略模式:封装算法族,支持运行时动态切换算法策略,提高系统灵活性。 命令模式:将请求封装为对象,支持请求排队、记录和撤销操作。 迭代器模式:解耦容器与遍历逻辑,提供统一遍历接口。 状态模式:封装状态转换逻辑,使对象在不同状态下表现出不同行为。 这些模式通过优化对象交互方式,明确职责分

今天比昨天更努力一点! 9871

Python 爬虫实战:Steam 游戏数据爬取与游戏市场分析

本文介绍了一个基于Python的Steam游戏数据分析项目。通过爬取Steam公开API和游戏详情页,获取游戏列表、价格、评价、标签等数据,结合SteamSpy统计销量和在线人数。项目使用requests、BeautifulSoup4进行数据采集,pandas处理数据,pyecharts和seaborn进行可视化。核心步骤包括:1)获取全量游戏列表并过滤;2)异步请求游戏详情处理限速;3)提取关键字段如价格、评分、标签;4)多维分析价格分布、标签热度等。技术栈涵盖API请求、HTML解析、数据存储与可视化,

u014481728的博客 308

AES-128-CMAC:背景、汽车应用、CAPL 实现与开源工具验证

本文详解车载诊断中AES-128-CMAC算法的原理与应用,涵盖其在UDS安全访问、刷写鉴权、SecOC认证及密钥派生中的核心作用。结合真实汽车电子场景,提供纯CAPL实现代码与测试脚本,并通过pycryptodome进行逐字节验证,确保算法正确性。全程基于CANoe实测数据,可直接用于HIL环境复现,助力开发者高效落地汽车网络安全方案。

蚂蚁小兵 119

设计模式三:行为型模式

行为型模式(11种):解释器模式、责任链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式、模板方法模式 1、责任链模式: 内容:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 角色: 抽象处理者(Handler) 具体处理者(...

weixin_33877092的博客 179

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

(三)行为型设计模式

1. 策略模式 1.1 问题背景分析 在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。 在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。 如果使用多重条件转移语句实现(即硬编码),不但使条件语句变得很复杂,而且增加、删除或更换算法要修改原

krain的博客 702

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

设计模式 ③ — 行为型模式

模板方法模式(TEMPLATE METHOD)介绍:知道一个算法的关键步骤,并确定了这些步骤的执行顺序,但不用的程序步骤是不一样的,解决方案就是模板方法模式。定义:定义一个操作中的算法的框架,将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。使用场景:1.多个子类有公有的方法,逻辑基本相同时。2.重要、复杂的算法,可以把核心算法设计为模板方法,周边细节功能由子...

黄诗宾的专栏 596

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

设计模式(三)行为型模式

Java 中一般认为有23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。 下面列出了所有的设计模式。需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为...

huopusa的博客 280

一文漫谈设计模式之行为型模式(三)

责任链模式通过将多个处理对象连接成链,实现了请求发送者与处理者的解耦。它让多个处理者都有机会处理请求,增加了系统的灵活性。在实际应用中,责任链模式常用于工作流审批、日志级别处理、过滤器链、异常处理等场景。Java中的Servlet Filter、Spring Security过滤器链都是责任链模式的典型应用。需要注意的是,要避免处理链过长导致的性能问题,并确保请求最终能被处理。命令模式通过将请求封装为对象,实现了请求发送者与接收者的解耦,支持请求的排队、记录、撤销/重做等高级功能。

andy dennis的博客 1189

安卓开发设计模式(三)——行为型设计模式

行为型设计模式专注于对象间的交互逻辑和职责分配,通过定义对象间的通信方式、行为分配规则,实现行为的复用、解耦与灵活扩展。核心是解决“对象如何协作完成任务”的问题,不改变对象的内部结构,而是优化对象间的协作关系,让系统更具灵活性和可维护性。

. 1358

设计模式(三)之行为型模式

本篇是关于设计模式的最后一讲,会讲到第三种设计模式——行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 先来张图,看看这11种模式的关系: 第一类:通过父类与子类的关系进行实现。第二类:两个类之间。第三类:类的状态。第四类:通过中间类。 策略模式(strategy)策略模式定义了一系列算法,并

Watson的博客 2506

设计模式总结(三):行为型模式

行为型模式。

qq_37534947的博客 699

设计模式(三):行为型模式

文章目录1. 模板方法模式(Template Method) 行为型模式的关注点是“怎样运行对象/类?” 行为型模式用于描述程序在运行时复杂的流程控制,描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 1. 模板方法模式(Templa

weixin_48922154的博客 620

设计模式总结(三):行为型模式

最后介绍一下行为型模式,此类模式占了23种常见设计模式里的大头。此类模式主要用于解决类与对象之间的交互问题,其包括以下11种模式:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式、访问者模式、备忘录模式、命令模式、解释器模式与中介模式。下面介绍下每个设计模式是用于解决什么问题的,在什么场景下可以考虑使用。 观察者模式:此模式用于解耦观察者和被观察者。当一个对象状态改变时,通知依赖于它的对象,而不是让依赖它的对象来一直查询它的状态,避免观察者对象占用CPU资源。此模式可以使用同步阻塞或异步非

plusworld的博客 462

23种设计模式专题三(行为型设计模式)

行为型设计模式:关注对象和行为的分离

一点一滴 2881

23种设计模式归纳(三)——行为型模式

行为型设计模式简述 1. 责任链模式 角色:抽象处理者、具体处理者 定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 适用场景: a.有多个对象可以处理一个请求,哪个对象该请求运行时刻自动确定。 b.在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 c.可处理一个请求的对象集合应该被...

点滴记录IT技术进程 357

设计模式:行为型模式(三)

感言:今天这篇行为型设计模式写完了,就写了三篇设计模式相关文章了,完成了设计模式的部分学习了。每一个设计模式自己都写了一个很小的Demo,当然这些Demo也是参考了很多其他人写的博客以及一些书籍汇总产生的。总体来说给我的感觉是我面向对象的抽象能力有了很大的提升。对于接口,继承,封装等有了更加深入的理解,但是坦率的讲自己对设计模式的理解还不够强,还需得有更多的实践来将理论上的东西进行进一步的落实。

Standup-jb的博客 1650

python设计模式(三)行为型模式

行为型模式(11种):解释器模式、责任链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式、模板方法模式 https://www.bilibili.com/video/BV19541167cn?spm_id_from=333.999.0.0 1、责任链模式 责任链模式 内容:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系 将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止 角色: 抽象处理者 具体处理者 客户端

Tacit_zfy99的博客 317

编程-笔记三:行为型设计模式-小结

行为型设计模式是一组用于描述类和对象如何交互以及如何分配职责的设计模式。它们通常涉及算法的封装、行为的抽象化以及对象间通信机制的设计。

qq_45831414的博客 1000
上一篇: 设计模式---行为型模式(二)
下一篇: 网络编程基础:从BIO到NIO再到AIO(一)
不早睡不改名@
博客等级 码龄5年 536粉丝 306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值