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 学习笔记
Dec 27 Python
Python 字符串定义
Sep 25 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
对python中的xlsxwriter库简单分析
May 04 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
利用django model save方法对未更改的字段依然进行了保存
Mar 28 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
pytorch MSELoss计算平均的实现方法
May 12 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
DIY实用性框形天线
2021/03/02 无线电
PHP实现分页的一个示例
2006/10/09 PHP
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
window.onload使用指南
2015/09/13 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
python解析xml文件实例分享
2013/12/04 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python清理子进程机制剖析
2017/11/23 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
python 字典的打印实现
2019/09/26 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
给学校建议书范文
2014/05/13 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
2014年资料员工作总结
2014/11/18 职场文书
财务会计求职信范文
2015/03/20 职场文书
农村老人去世追悼词
2015/06/23 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
python_tkinter弹出对话框创建
2022/03/20 Python