Python设计模式:命令模式
发布时间:2020-12-20 10:06:31 所属栏目:Python 来源:网络整理
导读:命令模式,正如模式的名字一样,该模式中的不同操作都可以当做不同的命令来执行,可以使用队列来执行一系列的命令,也可以单独执行某个命令。该模式重点是将不同的操作封装为不同的命令对象,将操作的调用者与执行者进行解耦。 命令模式中的Command对象(即
命令模式,正如模式的名字一样,该模式中的不同操作都可以当做不同的命令来执行,可以使用队列来执行一系列的命令,也可以单独执行某个命令。该模式重点是将不同的操作封装为不同的命令对象,将操作的调用者与执行者进行解耦。 命令模式中的Command对象(即每一个命令,或者说命令对象)用于封装在完成某项操作或触发一个事件时所需的全部信息,包括需要完成此操作的对象、该对象的方法以及该方法所需的参数,即Command对象中会封装好某项操作所需的所有信息,使用时只需要调用对应的execute方法即可,即表示“这条命令”的执行。通常我们会使用到不只一个命令,因此可能会创建多个Command对象,代表多个不同操作的命令。 命令模式三个角色:
命令模式核心思想:
命令模式优点:
命令模式缺点:
简单示例: from abc import ABCMeta,abstractmethod class Receiver: """Receiver:定义各种方法以便执行不同的操作""" def action1(self): print('Execute action1...') action2(self): Execute action2...) class Command(metaclass=ABCMeta): 命令对象接口:定义统一的命令执行方法""" @abstractmethod execute(self): pass Action1(Command): 命令1:用于执行操作action1def __init__(self,receiver): self.receiver = receiver execute(self): self.receiver.action1() Action2(Command): 命令2:用于执行操作action2 execute(self): self.receiver.action2() Invoker: 创建命令队列,调用并执行队列中的命令(self): self.actions = [] append_action(self,action): self.actions.append(action) 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() ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |