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

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

本文深入解析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 相关产品和应用

全部下载

专题列表