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 错误和异常小结
Oct 09 Python
Python处理字符串之isspace()方法的使用
May 19 Python
Python中type的构造函数参数含义说明
Jun 21 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
解决pycharm无法识别本地site-packages的问题
Oct 13 Python
对python的输出和输出格式详解
Dec 08 Python
对python字典过滤条件的实例详解
Jan 22 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
Django REST framework 分页的实现代码
Jun 19 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
浅析Django接口版本控制
Jun 26 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写的AES加密解密类分享
2014/06/20 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
nginx下安装php7+php5
2016/07/31 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php创建类并调用的实例方法
2019/09/25 PHP
文本加密解密
2006/06/23 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
2020/05/09 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
python递归实现快速排序
2018/08/18 Python
Python流程控制语句的深入讲解
2020/06/15 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
卫校护理专业毕业生求职信
2013/11/26 职场文书
财务简历的自我评价
2014/03/05 职场文书
蓬莱阁导游词
2015/02/04 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python