Python设计模式之命令模式原理与用法实例分析
作者:Andy冉明 发布时间:2022-07-28 20:49:15
标签:Python,设计模式,命令模式
本文实例讲述了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程序设计有所帮助。
来源:https://www.cnblogs.com/onepiece-andy/p/python-command-pattern.html
0
投稿
猜你喜欢
- 前言在做项目中,网站前台或者后台有些数据需要在多个视图页面使用,例如用户基本信息数据,菜单展示数据。首先想到的是在每个控制器里传入这些需要的
- Access SQL 函数 收藏 ▲日期/时间CDate 将字符串转化成为日期 select CDate("2005/
- 近又开始做网页,发现之前写的页面不规范,这次从头在来,希望一次比一次进步,先从CSS中的标点符号开始吧,这篇做为草稿已经放了很长时间了,还是
- 引言提到 numpy 的数组操作,我们就不得不说到 np.concatenate() 函数,concatenate 一词在英文中是级联的意思
- 一. 10句话1.不要依赖register_global=ON的环境,从你刚懂得配置php运行环境甚至尚不明白register_global
- 导语幼儿园升小学,小学升中学,中学升高中..........每个人都要经历的九年义务教育:伴随的都是作业、随堂考、以及每个科目的大大小小的考
- 开启Web服务1.基本方式Python中自带了简单的服务器程序,能较容易地打开服务。在python3中将原来的SimpleHTTPServe
- 新建py文件,在里面写入Python代码,代码的功能是打印10次“Hello!”,将代码文件保存到桌面上:在命令行中运行Python脚本,并
- 1.执行cmd命令,不显示执行过程中弹出的黑框def run_cmd( cmd_str='', echo_print=1):
- 问题:如果一个网站拥有两个域名:domain1.com和domain2.com。在网站运营前期,主推domain1.com,但发展到中期,由
- 前期准备1.beat插件安装pip3 install django-celery-beat2.注册APPINSTALLED_APPS = [
- 本文介绍FCKeditor在Java环境下的使用方法。一、简介 功能:所见即所得,支持图片和Flash,工具栏可自由配置,使用简单兼容性:I
- RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传
- 透视表是一种可以对数据动态排布并且分类汇总的表格格式。对于熟练使用 excel 的伙伴来说,一定很是亲切!pd.pivot_table()
- 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中。将csv文件中的数据直接读取为 dict 类型和 DataFr
- 一、请求扩展1.before_request作用: 类比django中间件中的process_request,在请求到来执行路由函数之前先执
- 昨晚着手给个人博客增加网易微博的调用,在Opera下却出现了一个意想不到的问题。内容的展示,一开始是做成横向不间断滚动(现在已经改成纵向定时
- 分享一个 * 真网页拾色器(调色板),颜色丰富216色,使用方便。运行截图:<html id="container"
- 在 PHP 中表示空的map或空数组都是以空数组形式,在转化为json数据时,会将空数组统一 json 序列化成 [],这样就存在
- jxdawei的blog:http://www.iwcn.net/本文讨论的是在web标准普及的形势下,网站程序员的定位以及如何与设计师配合