2025-07-29 C++备忘录模式:对象状态的时光回溯术 C++备忘录模式:对象状态的时光回溯术 一、备忘录模式的核心价值在软件开发中,我们常遇到这样的场景:用户点击了三次"撤销"按钮,系统需要回退到三个操作前的状态。传统做法可能是直接暴露对象内部状态进行修改——这就像为了给病人抽血而必须切开胸腔,显然违背了面向对象设计的封装原则。备忘录模式(Memento Pattern)通过引入"状态快照"的概念,在不破坏封装性的前提下,实现了对象状态的保存与恢复。其精妙之处在于: - 原发器(Originator):拥有需要保存的状态 - 备忘录(Memento):存储原发器内部状态的快照 - 看管人(Caretaker):负责保存和管理备忘录,但不直接操作内容二、C++实现的三重奏1. 基础结构定义cpp // 备忘录类(状态容器) class TextMemento { friend class TextEditor; // 关键友元声明 std::string state_; TextMemento(const std::string& s) : state_(s) {} };// 原发器(状态拥有者) class TextEditor { ... 2025年07月29日 44 阅读 0 评论
2025-07-15 Python状态机实现与持久化实践指南 Python状态机实现与持久化实践指南 一、状态机的本质与应用场景状态机(State Machine)是描述对象行为模式的数学模型,特别适合处理具有明确状态转换规则的业务逻辑。在我的电商支付系统开发经历中,订单状态管理就是个典型案例:python class OrderState(Enum): PENDING = 1 PAID = 2 SHIPPED = 3 COMPLETED = 4 CANCELLED = 5当我们需要处理"待支付→已支付→已发货→已完成"这样的状态流转时,if-else嵌套会变得难以维护。此时状态机模式就能展现出结构化优势。二、Python状态机的5种实现方式1. 条件分支法(基础版)python def handle_order(state): if state == OrderState.PENDING: process_payment() elif state == OrderState.PAID: ship_goods() # 更多条件分支... 缺点:违反开闭原则,新增状态需修改既有代码2. ... 2025年07月15日 46 阅读 0 评论