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 05 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
Python 函数返回值的示例代码
Mar 11 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
python selenium操作cookie的实现
Mar 18 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
Sep 21 Python
Python中相见恨晚的技巧
Apr 13 Python
解决python绘图使用subplots出现标题重叠的问题
Apr 30 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 Python
Python实现制作销售数据可视化看板详解
Nov 27 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新手用的Insert和Update语句构造类
2012/03/31 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
jquery 问答知识整理
2010/02/11 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
Python装饰器用法实例总结
2018/02/07 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
python em算法的实现
2020/10/03 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
高中校园广播稿
2014/01/11 职场文书
实习单位鉴定评语
2014/04/26 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
财务统计员岗位职责
2015/04/14 职场文书
文化大革命观后感
2015/06/17 职场文书
结婚典礼主持词
2015/06/29 职场文书
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL