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读写ini文件示例(python读写文件)
Mar 25 Python
Python实现将n个点均匀地分布在球面上的方法
Mar 12 Python
Python生成不重复随机值的方法
May 11 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
详解pandas数据合并与重塑(pd.concat篇)
Jul 09 Python
python 公共方法汇总解析
Sep 16 Python
python 实现二维列表转置
Dec 02 Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 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
文章推荐系统(二)
2006/10/09 PHP
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
vue实现购物车的监听
2020/04/20 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
Python完全新手教程
2007/02/08 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
详解Python字典小结
2018/10/20 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
医学专业毕业生推荐信
2014/07/12 职场文书
运动会演讲稿100字
2014/08/25 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript