模式说明
将请求封装成对象,从而使可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
模式结构图
程序示例
说明:调用者是遥控器,接受者是电视
代码:
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