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 enumerate函数的使用方法总结
Nov 15 Python
Python实现从log日志中提取ip的方法【正则提取】
Mar 31 Python
Python实现删除时保留特定文件夹和文件的示例
Apr 27 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
Python TestCase中的断言方法介绍
May 02 Python
Django 拆分model和view的实现方法
Aug 16 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
Python requests模块session代码实例
Apr 14 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 Python
matplotlib相关系统目录获取方式小结
Feb 03 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 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+APACHE实现用户论证的方法
2006/10/09 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
php mail to 配置详解
2014/01/16 PHP
php中smarty区域循环的方法
2015/06/11 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
js 调整select 位置的函数
2008/02/21 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
js实现列表按字母排序
2020/08/11 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
交通法规咨询中心工作职责
2013/11/27 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
企业车辆管理制度
2014/01/24 职场文书
捐款活动总结
2014/08/27 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
入队仪式主持词
2015/07/04 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
Python如何识别银行卡卡号?
2021/06/10 Python
SpringBoot Http远程调用的方法
2022/08/14 Java/Android