📅  最后修改于: 2023-12-03 15:19:36.125000             🧑  作者: Mango
命令模式(Command pattern)是一种行为设计模式,它允许将操作(命令)封装在对象中,使发送者和接收者彼此独立并解耦。该模式的基本思路是将请求封装成一个对象,从而使请求者和接收者能够松散地耦合,并且可以在系统中支持一些额外的操作,例如撤销和重做。
命令模式常用于以下场景:
命令模式由以下角色组成:
以下是一个简易的命令模式的示例代码:
from abc import ABCMeta, abstractmethod
class Command(metaclass=ABCMeta):
@abstractmethod
def execute(self):
pass
class ConcreteCommand(Command):
def __init__(self, receiver):
self.receiver = receiver
def execute(self):
self.receiver.do_something()
class Receiver:
def do_something(self):
print("Receiver: Doing something.")
class Invoker:
def __init__(self):
self.command = None
def set_command(self, command):
self.command = command
def run(self):
self.command.execute()
class Client:
def __init__(self):
self.invoker = Invoker()
self.receiver = Receiver()
def execute_command(self):
command = ConcreteCommand(self.receiver)
self.invoker.set_command(command)
self.invoker.run()
if __name__ == "__main__":
client = Client()
client.execute_command()
其中,我们定义了一个抽象类Command作为命令的接口,ConcreteCommand作为具体的命令对象,Receiver作为接收者对象,Invoker作为调用者对象,Client作为客户端对象。客户端通过执行execute_command()
方法来调用命令模式,让Receiver执行具体的操作。
命令模式的优点:
命令模式的缺点:
命令模式是一种常见的设计模式,它可以很好地降低系统的耦合度,同时也支持撤销和重做的操作。在需要将命令发出者和命令执行者解耦的场景下,可以考虑使用命令模式。