news 2026/3/11 1:16:18

Python设计模式:状态模式详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python设计模式:状态模式详解

更多内容请见: 《Python3案例和总结》 - 专栏介绍和目录

文章目录

    • 一、状态模式概述
      • 1.1 状态模式的定义
      • 1.2 状态模式的核心思想
      • 1.3 状态模式的结构与角色
      • 1.4 状态模式的优缺点
      • 1.5 与其他模式的区别
      • 1.6 适用场景
    • 二、代码实现
      • 2.1 步骤 1:定义抽象状态
      • 2.2 步骤 2:实现具体状态类
      • 2.3 步骤 3:定义上下文
      • 2.4 步骤 4:客户端调用
      • 2.5 执行结果

一、状态模式概述

想象一下,你正在开发一个在线文档编辑器。这个编辑器有多种状态:草稿审阅中已发布。在不同的状态下,用户能执行的操作是完全不同的。在“草稿”状态下,你可以自由编辑;在“审阅中”状态下,你只能查看,不能编辑;在“已发布”状态下,你只能评论,不能修改内容。

如果用传统的if-elseswitch语句来处理,代码会迅速变成一团难以维护。每增加一个状态或修改一个行为的逻辑,你都需要深入到一个巨大的方法中去修改核心的if-else结构,这违反了开闭原则(对扩展开放,对修改关闭),也让代码的阅读和测试变得异常痛苦。

状态模式正是为了解决这类问题而生。它允许一个对象在其内部状态改变时,改变它的行为,对象看起来似乎修改了它的类。

1.1 状态模式的定义

定义:允许一个对象在其内部状态改变时改变它的行为。这个对象看起来像是改变了它的类。这句话听起来有点绕,我们把它拆解开:

  • “一个对象”:指的是拥有状态的对象,我们称之为上下文。比如,上面例子中的“文档”就是上下文。
  • “内部状态”:指的是对象在某一时刻的具体情况,比如“草稿”、“审阅中”。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/5 16:49:13

大屏互动游戏——2026「马上抱富」

熹乐互动2026年「马上抱富」摇一摇大屏互动游戏,依托分布式架构边缘计算核心技术底座,攻克行业高并发场景下的延迟、卡顿痛点,为年会、品牌营销等场景打造极致流畅的互动体验,用技术实力赋能商业价值爆发。1. 毫秒级实时同步&…

作者头像 李华
网站建设 2026/3/8 23:31:37

19、Python 文件与目录操作:从比较到同步的全方位指南

Python 文件与目录操作:从比较到同步的全方位指南 在数据处理和管理的过程中,经常会遇到需要比较、合并目录,查找重复文件,进行模式匹配以及同步数据等问题。Python 提供了丰富的工具和方法来解决这些问题,下面将详细介绍相关的操作和技术。 1. 目录比较与合并 在 Pyth…

作者头像 李华
网站建设 2026/3/9 16:48:53

小学生学C++编程 (表达式精讲)

一、《C表达式魔法课堂》开讲了!🌈 第一章:什么是“表达式”?👉 表达式 会算出一个结果的“算式”就像数学里的算式一样:3 5 在 C 里也是一个表达式,它的结果是 8。📌 只要“能算出…

作者头像 李华
网站建设 2026/3/5 21:59:26

src挖洞笔记分享_上

本文仅供学习参考,如任何人利用文中手段进行非法攻击与本人无关 红队企业信息收集 信息收集 1)红队与企业的区别 权限范围:红队可以对100%控股的子公司进行横向渗透,而企业SRC通常只针对主公司 目标差异:红队主要目标是…

作者头像 李华
网站建设 2026/3/10 9:28:03

算法基础-(数据结构)

1.单调栈 1. 什么是单调栈? 单调栈,顾名思义,就是具有单调性的栈。它依旧是⼀个栈结构,只不过⾥⾯存储的数据是递增或者 递减的。这种结构是很容易实现的(如下⾯的代码),但重点是维护⼀个单调…

作者头像 李华