zoukankan      html  css  js  c++  java
  • 【编程思想】【设计模式】【行为模式Behavioral】command

    Python版

    https://github.com/faif/python-patterns/blob/master/behavioral/command.py

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    """
    *TL;DR80
    Encapsulates all information needed to perform an action or trigger an event.
    """
    
    from __future__ import print_function
    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(u"renaming %s to %s" % (src, dest))
            os.rename(src, dest)
    
    
    def main():
        command_stack = []
    
        # commands are just pushed into the command stack
        command_stack.append(MoveFileCommand('foo.txt', 'bar.txt'))
        command_stack.append(MoveFileCommand('bar.txt', 'baz.txt'))
    
        # verify that none of the target files exist
        assert(not lexists("foo.txt"))
        assert(not lexists("bar.txt"))
        assert(not lexists("baz.txt"))
        try:
            with open("foo.txt", "w"):  # Creating the file
                pass
    
            # they can be executed later on
            for cmd in command_stack:
                cmd.execute()
    
            # and can also be undone at will
            for cmd in reversed(command_stack):
                cmd.undo()
        finally:
            os.unlink("foo.txt")
    
    if __name__ == "__main__":
        main()
    
    ### OUTPUT ###
    # renaming foo.txt to bar.txt
    # renaming bar.txt to baz.txt
    # renaming baz.txt to bar.txt
    # renaming bar.txt to foo.txt
    Python转载版
  • 相关阅读:
    常用的dos命令
    java环境的配置
    javascript面向对象个人理解
    js如何获取样式?
    springboot新建项目遇到Whitelabel Error Page
    CSS 隐藏页面元素的 几 种方法总结
    优美动听的葫芦丝名曲
    大前端资料合集
    CSS实现背景透明,文字不透明(兼容所有浏览器)
    文字上下无缝滚动效果
  • 原文地址:https://www.cnblogs.com/demonzk/p/9035608.html
Copyright © 2011-2022 走看看