zoukankan      html  css  js  c++  java
  • 命令模式

    模式说明

    将请求封装成对象,从而使可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。

    模式结构图

    程序示例

    说明:调用者是遥控器,接受者是电视

    代码:

    class TV(object):
        def open(self):
            print 'turn on tv'
        def close(self):
            print 'turn off tv'
        def changeChannel(self):
            print 'change channel'
    
    class Command(object):
        _tv = TV()
        def __init__(self,tv):
            self._tv = tv
        def execute(self):
            pass
    
    class TurnOnCommand(Command):
        def execute(self):
            self._tv.open()
    
    class TurnOffCommand(Command):
        def execute(self):
            self._tv.close()
    
    class ChangeChannelCommand(Command):
        def execute(self):
            self._tv.changeChannel()
    
    class Controller(object):
        #_turnon = None
        #_turnoff = None
        #_changechannel = None
        def __init__(self,turnon,turnoff,changechannel):
            self._changechannel = changechannel
            self._turnon = turnon
            self._turnoff = turnoff
    
        def open(self):
            self._turnon.execute()
        def close(self):
            self._turnoff.execute()
        def changechannel(self):
            self._changechannel.execute()
    
    
    if '__main__' == __name__:
        tv = TV()
        turnon = TurnOnCommand(tv)
        turnoff = TurnOffCommand(tv)
        changechannel = ChangeChannelCommand(tv)
    
        controller = Controller(turnon,turnoff,changechannel)
        controller.open()
        controller.changechannel()
        controller.close()

    运行结果:

    参考来源:

    http://www.cnblogs.com/chenssy/p/3679190.html

    http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html

    http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html

  • 相关阅读:
    大整数模拟
    MSSQL存储过程中获取记录集并循环操作一例
    about协议的妙用
    C#基础概念二十五问
    很完美的JS判断日期函数
    asp.net C# FileUpload 控件如何判断文件名的后缀
    c++中指针学习的两个绝好例子
    ASP.net性能优化总结
    C++指针
    JS中的undefined,null,"",0和false
  • 原文地址:https://www.cnblogs.com/cotton/p/3935089.html
Copyright © 2011-2022 走看看