Python设计模式实战:命令模式原理、代码实现与优缺点解析
本文深入解析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程序设计的阐述能对广大开发者有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









