Python设计模式实战:命令模式原理、代码实现与优缺点解析

拾柒
拾柒
发布时间:2026-10-13| 5人浏览过
原创

本文深入解析Python中的命令模式,通过具体代码示例展示如何将请求封装为对象,实现请求的参数化、排队、日志记录及撤销重做功能。详细阐述了该模式在解耦请求发起者与执行者方面的优势,并提供了完整的Python实现代码供参考。

本文通过具体实例详细解析Python设计模式中的命令模式原理及其实际应用,旨在为读者提供清晰的参考与学习路径。

命令模式(Command Pattern)的核心思想是将请求封装为一个对象,从而使得可以使用不同的请求对客户进行参数化;同时支持对请求进行排队操作、记录请求日志,以及实现可撤销的操作功能。

以下展示一个基于Python的命令模式示例代码。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——命令模式
命令模式(Command Pattern):将请求封装成对象,从而使可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作.
"""
# 命令类
class Command(object):
  def __init__(self, receiver):
    self.receiver = receiver
  def execute(self):
    pass
# 执行接收者的操作
class ConcreteCommand(Command):
  def execute(self):
    self.receiver.action()
# 接收命令
class Invoker(object):
  def __init__(self):
    self.command = ''
  def setcommand(self,command):
    self.command = command
  def excutecommand(self):
    self.command.execute()
# 具体执行类
class Receiver(object):
  def action(self):
    print "执行请求"
if __name__ == "__main__":
  r = Receiver() #创建需要执行的命令
  c = ConcreteCommand(r) # 绑定要执行的命令
  i = Invoker() # 创建命令执行者
  i.setcommand(c) # 接受命令
  i.excutecommand() # 执行命令

上述代码中类的结构关系如下图所示:

命令模式的主要优点包括:

能够较为轻松地设计并实现命令队列。

便于将命令记录到日志文件中,方便追踪和审计。

允许接收请求的一方拥有否决权,决定是否执行该请求。

可以方便地实现对已发出请求的撤销(Undo)和重做(Redo)操作。

新增具体命令类时,不会影响其他现有类的运行,因此扩展新的具体命令类非常便捷。

命令模式最显著的优势在于实现了请求发起者(Invoker)与实际操作执行者(Receiver)之间的解耦,即把“请求一个操作”与“知道如何执行该操作”的对象分离开来。

如需了解更多Python相关知识,建议查阅本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》以及《Python入门与进阶经典教程》。

希望本文关于Python程序设计的阐述能对广大开发者有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。