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 相关文章推荐
python list元素为tuple时的排序方法
Apr 18 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Python 判断奇数偶数的方法
Dec 20 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
python3.8下载及安装步骤详解
Jan 15 Python
pytorch进行上采样的种类实例
Feb 18 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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
html中select语句读取mysql表中内容
2006/10/09 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
Python最小二乘法矩阵
2019/01/02 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
Python发展简史 Python来历
2019/05/14 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
监察建议书格式
2014/05/19 职场文书
委托书格式范文
2015/01/28 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
2015双创工作总结
2015/07/24 职场文书
2019新员工心得体会
2019/06/25 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技