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自动翻译实现方法
May 28 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
详解Python3的TFTP文件传输
Jun 26 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
怎么快速自学python
Jun 22 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
Nov 17 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上传、管理照片示例
2006/10/09 PHP
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
php strnatcmp()函数的用法总结
2013/11/27 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
php筛选不存在的图片资源
2015/04/28 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
python调用cmd复制文件代码分享
2013/12/27 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
《静夜思》教学反思
2016/02/17 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
MySQL优化之慢日志查询
2022/06/10 MySQL