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不带重复的全排列代码
Aug 13 Python
用Python进行行为驱动开发的入门教程
Apr 23 Python
详解Python中的条件判断语句
May 14 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
详解python之简单主机批量管理工具
Jan 27 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
Python的argparse库使用详解
Oct 09 Python
Python中正则表达式的用法总结
Feb 22 Python
PyTorch学习:动态图和静态图的例子
Jan 06 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
python如何修改文件时间属性
Feb 05 Python
python SOCKET编程基础入门
Feb 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同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
Python 字典与字符串的互转实例
2017/01/13 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Python虚拟环境venv用法详解
2020/05/25 Python
python飞机大战游戏实例讲解
2020/12/04 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
党员培训思想汇报
2014/01/07 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
迟到检讨书300字
2014/02/14 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
党员自评材料范文
2014/12/17 职场文书
工作年限证明模板
2015/06/15 职场文书
预备党员入党感言
2015/08/01 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
python for循环赋值问题
2021/06/03 Python
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS