Python设计模式之命令模式原理与用法实例分析


Posted in Python onJanuary 11, 2019

本文实例讲述了Python设计模式之命令模式原理与用法。分享给大家供大家参考,具体如下:

命令模式(Command Pattern):将请求封装成对象,从而使可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作.

下面是一个命令模式的demo:

#!/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() # 执行命令

上面类的设计如下图:

Python设计模式之命令模式原理与用法实例分析

优点:

可以较容易的设计一个命令队列

可以较容易的将命令记入日志

允许接收请求的一方决定是否要否决请求

可以容易的实现对请求的撤销和重做

加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易

命令模式最大的优点是 把请求一个操作的对象与知道怎么执行一个操作的对象分割开

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
python使用Flask框架获取用户IP地址的方法
Mar 21 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
python统计字母、空格、数字等字符个数的实例
Jun 29 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
Mar 05 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
python爬虫中的url下载器用法详解
Nov 30 Python
Opencv中cv2.floodFill算法的使用
Jun 18 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 #Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 #Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 #Python
Python实现批量执行同目录下的py文件方法
Jan 11 #Python
python多个模块py文件的数据共享实例
Jan 11 #Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 #Python
详解从Django Rest Framework响应中删除空字段
Jan 11 #Python
You might like
PHP set_time_limit(0)长连接的实现分析
2010/03/02 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
php中namespace及use用法分析
2016/12/06 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
常见的javascript跨域通信方法
2015/12/31 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
django主动抛出403异常的方法详解
2019/01/04 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
python实现拼图小游戏
2020/02/22 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
酒吧副总经理岗位职责
2013/12/10 职场文书
初一家长会邀请函
2014/01/31 职场文书
总经理任命书范本
2014/06/05 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
公司捐书倡议书
2015/04/27 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript