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

  • 相关阅读:
    00 vue源码里面常见方法
    vue 组件
    vue 样式
    vue 表单
    网络技术:NAT 网络地址转换
    网络技术:ACL 访问控制列表
    网络技术:VLAN 虚拟局域网
    Java程序设计——购物车系统
    网络 2011-2012 C 语言第三次作业批改总结
    第一用CSS
  • 原文地址:https://www.cnblogs.com/cotton/p/3935089.html
Copyright © 2011-2022 走看看