对象通过中介间接协作是一种设计模式,它旨在减少系统中各个对象之间的耦合度,使得系统更加灵活和可维护。这种模式通常涉及到一个中介者(Mediator)对象,它封装了对象之间的交互逻辑,从而使得对象之间的通信不需要直接引用对方。
中介者模式(Mediator Pattern)定义了一个中介对象,该对象封装了一组对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
以下是中介者模式的一些关键特点:
-
减少耦合:对象之间的通信通过中介者进行,而不是直接相互调用,从而减少了对象之间的依赖。
-
集中控制:中介者可以控制对象之间的交互方式,可以更容易地管理和修改这些交互。
-
易于扩展:添加新的对象类型或改变交互逻辑通常不需要修改其他对象的代码,只需要修改中介者即可。
-
可维护性:中介者模式使得系统的变化更加局部化,有助于提高代码的可维护性。
下面是一个简单的Python示例,演示了对象通过中介间接协作的情况:
class Mediator:
def execute(self, command, receiver):
command.execute(receiver)
class Command:
def execute(self, receiver):
pass
class ConcreteCommandA(Command):
def execute(self, receiver):
receiver.actionA()
class ConcreteCommandB(Command):
def execute(self, receiver):
receiver.actionB()
class Receiver:
def actionA(self):
print("Receiver action A")
def actionB(self):
print("Receiver action B")
# 使用
mediator = Mediator()
commandA = ConcreteCommandA()
commandB = ConcreteCommandB()
receiver = Receiver()
# 通过中介者执行命令
mediator.execute(commandA, receiver)
mediator.execute(commandB, receiver)
在这个例子中,Mediator
是中介者,它定义了 execute
方法来执行命令。Command
是命令接口,它定义了 execute
方法。ConcreteCommandA
和 ConcreteCommandB
是具体的命令类,它们实现了 execute
方法,指定了接收者(Receiver
)应该执行的动作。Receiver
是接收者,它实现了具体的动作。
当需要执行一个动作时,不是直接调用接收者的方法,而是通过中介者和命令对象来进行。这样,如果需要添加新的动作或改变动作的执行方式,只需要修改相应的命令对象或中介者,而不需要修改接收者的代码。
中介者模式在实际应用中非常常见,特别是在复杂的系统中,它有助于简化对象之间的交互,提高系统的灵活性和可维护性。