美文网首页Python设计模式
Python设计模式 - 命令模式

Python设计模式 - 命令模式

作者: jumo | 来源:发表于2020-02-21 10:46 被阅读0次

"""

命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;

支持对请求排队、记录请求日志,以及可撤销的操作。

优点:把请求一个操作的对象与知道怎么执行一个操作的对象分隔开。

"""

import os

from os.path import lexists

class MoveFileCommand(object):

    def __init__(self, src, dest):

        self.src = src

        self.dest = dest

    def execute(self):

        self.rename(self.src, self.dest)

    def undo(self):

        self.rename(self.dest, self.src)

    def rename(self, src, dest):

        print('重命名 {} to {}'.format(src, dest))

        """

        os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。

        src -- 要修改的目录名

        dst -- 修改后的目录名

        """

        os.rename(src, dest)

def main():

    command_stack = []

    # 命令只是压入命令栈

    command_stack.append(MoveFileCommand('foo.txt', 'bar.txt'))

    command_stack.append(MoveFileCommand('bar.txt', 'baz.txt'))

    # 确认没有任何目标文件的存在

    assert(not lexists("foo.txt"))

    assert(not lexists("bar.txt"))

    assert(not lexists("baz.txt"))

    try:

        with open("foo.txt", "w"):  # 创建文件

            pass

        #它们可以稍后执行

        for cmd in command_stack:

            cmd.execute()

        #并且也可以随意撤消

        """

        reversed()倒排列表中的元素

        """

        for cmd in reversed(command_stack):

            cmd.undo()

    finally:

        """

        os.unlink() 方法用于删除文件,如果文件是一个目录则返回一个错误。

        """

        os.unlink("foo.txt")

if __name__ == "__main__":

    #print("目录为: %s" % os.listdir(os.getcwd()))

    main()

相关文章

  • Python 设计模式——命令模式

    命令模式是一种行为设计模式。可以用来实现比如安装软件时的安装向导功能,通常安装向导会通过多个步骤根据用户的选择了解...

  • Python设计模式 - 命令模式

    """ 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 支持对请求排队、记录请求日志...

  • Python(1)

    一.命令行模式和Python交互模式 命令行模式:在开始菜单里:运行-cmd-进入命令行模式 Python交互模式...

  • 设计模式-命令模式

    命令模式 介绍: 模式模式(Command Pattern),是行为型设计模式之一。命令模式相对于其他的设计模式来...

  • Python设计模式之命令模式

    命令模式 现在多数应用都有撤销操作。虽然难以想象,但在很多年里,任何软件中确实都不存在撤销操作。撤销操作是在197...

  • python设计模式(十六):命令模式

    “行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处...

  • 命令模式(Command)

    本文参考自:《JAVA设计模式》之命令模式(Command) 1. 作用 命令模式属于对象的行为模式。命令模式又称...

  • 文章收集

    java设计模式之命令模式

  • Python --- 1

    1、在命令行模式下,输入python,即可进入到python交互模式。 2、Python交互模式下的命令提示符是:...

  • 设计模式详解——命令模式

    本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之命令模式。 一、命令模式的概念 命令模式...

网友评论

    本文标题:Python设计模式 - 命令模式

    本文链接:https://www.haomeiwen.com/subject/jlaqqhtx.html