飞升驱虫数据,仙客来图片,邱琦雯老公
命令模式,正如模式的名字一样,该模式中的不同操作都可以当做不同的命令来执行,可以使用队列来执行一系列的命令,也可以单独执行某个命令。该模式重点是将不同的操作封装为不同的命令对象,将操作的调用者与执行者进行解耦。
命令模式中的command对象(即每一个命令,或者说命令对象)用于封装在完成某项操作或触发一个事件时所需的全部信息,包括需要完成此操作的对象、该对象的方法以及该方法所需的参数,即command对象中会封装好某项操作所需的所有信息,使用时只需要调用对应的execute方法即可,即表示“这条命令”的执行。通常我们会使用到不只一个命令,因此可能会创建多个command对象,代表多个不同操作的命令。
命令模式三个角色:
命令模式核心思想:
命令模式优点:
命令模式缺点:
简单示例:
from abc import abcmeta, abstractmethod class receiver: """receiver:定义各种方法以便执行不同的操作""" def action1(self): print('execute action1...') def action2(self): print('execute action2...') class command(metaclass=abcmeta): """命令对象接口:定义统一的命令执行方法""" @abstractmethod def execute(self): pass class action1(command): """命令1:用于执行操作action1""" def __init__(self, receiver): self.receiver = receiver def execute(self): self.receiver.action1() class action2(command): """命令2:用于执行操作action2""" def __init__(self, receiver): self.receiver = receiver def execute(self): self.receiver.action2() class invoker: """创建命令队列,调用并执行队列中的命令""" def __init__(self): self.actions = [] def append_action(self, action): self.actions.append(action) def execute_actions(self): for action in self.actions: action.execute() if __name__ == '__main__': receiver = receiver() action1 = action1(receiver) action2 = action2(receiver) invoker = invoker() invoker.append_action(action1) invoker.append_action(action2) invoker.execute_actions()
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论