executioner

admin 34 0

Executioner 是一个执行器模式,它提供了一种将命令封装成对象的机制,以便在需要时可以方便地执行这些命令,Executioner 模式通常用于将命令与执行它们的具体操作解耦,使它们可以独立于具体的执行方式进行定义和组合。

下面是一个简单的 Executioner 实现,用 Python 编写:

class Command:
    def execute(self):
        raise NotImplementedError("Subclass must implement this method")

class ConcreteCommand(Command):
    def __init__(self, receiver):
        self.receiver = receiver
    
    def execute(self):
        self.receiver.action()

class Receiver:
    def action(self):
        raise NotImplementedError("Subclass must implement this method")

class ConcreteReceiver(Receiver):
    def __init__(self):
        self.result = []
    
    def action(self):
        self.result.append("ConcreteReceiver action")

class Executioner:
    def __init__(self):
        self.receiver = None
    
    def set_receiver(self, receiver):
        self.receiver = receiver
    
    def execute_command(self, command):
        command.execute()

在上面的代码中,我们定义了一个 `Command` 抽象基类,其中有一个 `execute` 方法,需要在子类中进行实现,我们还定义了一个 `ConcreteCommand` 类,它继承自 `Command` 类,并实现了一个 `execute` 方法,该方法调用了一个接收器的 `action` 方法,我们还定义了一个 `Receiver` 抽象基类,其中有一个 `action` 方法,需要在子类中进行实现,我们定义了一个 `Executioner` 类,它包含了一个接收器对象和一个执行命令的方法,在 `execute_command` 方法中,我们将命令对象传递给接收器对象的 `action` 方法。

下面是一个使用上述代码的示例:

# 创建一个 ConcreteCommand 对象和一个 ConcreteReceiver 对象
command = ConcreteCommand(concrete_receiver)
receiver = ConcreteReceiver()

# 将 ConcreteCommand 对象和 ConcreteReceiver 对象传递给 Executioner 对象
executioner.set_receiver(receiver)
executioner.execute_command(command)

# 打印执行结果
print(receiver.result) # ['ConcreteReceiver action']

在上面的示例中,我们首先创建了一个 `ConcreteCommand` 对象和一个 `ConcreteReceiver` 对象,然后我们将 `ConcreteCommand` 对象和 `ConcreteReceiver` 对象传递给 `Executioner` 对象,并调用 `execute_command` 方法来执行命令,我们打印了接收器的执行结果。