徐汇微信手机网站制作,出口外贸网站,网站备案是不是就是空间备案,用asp做网站视频定义
中介者模式#xff08;Mediator Pattern#xff09;是一种行为设计模式#xff0c;通过引入一个中介者对象#xff0c;来降低多个对象之间的直接交互#xff0c;从而减少它们之间的耦合度。中介者充当不同对象之间的协调者#xff0c;使得对象之间的通信变得简单且…定义
中介者模式Mediator Pattern是一种行为设计模式通过引入一个中介者对象来降低多个对象之间的直接交互从而减少它们之间的耦合度。中介者充当不同对象之间的协调者使得对象之间的通信变得简单且集中。
UML图 Mediator中介者接口定义中介者与同事之间的交互方法。ConcreteMediator具体中介者实现中介者接口维护对同事对象的引用并协调它们之间的交互。Colleague同事抽象类通常持有对中介者的引用通过中介者进行通信。ConcreteColleague同事类具体的组件类通常持有对中介者的引用通过中介者进行通信。
代码
// Mediator interface
interface Mediator {void send(String message, Colleague colleague);
}// Concrete Mediator
class ChatMediator implements Mediator {private ListColleague colleagues new ArrayList();public void addColleague(Colleague colleague) {colleagues.add(colleague);}Overridepublic void send(String message, Colleague colleague) {for (Colleague c : colleagues) {// Prevent sending message back to the senderif (c ! colleague) {c.receive(message);}}}
}// Colleague interface
abstract class Colleague {protected Mediator mediator;public Colleague(Mediator mediator) {this.mediator mediator;}public abstract void send(String message);public abstract void receive(String message);
}// Concrete Colleague
class User extends Colleague {private String name;public User(Mediator mediator, String name) {super(mediator);this.name name;}Overridepublic void send(String message) {System.out.println(name : Sending message: message);mediator.send(message, this);}Overridepublic void receive(String message) {System.out.println(name : Received message: message);}
}// Client code
public class MediatorPatternDemo {public static void main(String[] args) {ChatMediator mediator new ChatMediator();User user1 new User(mediator, Alice);User user2 new User(mediator, Bob);mediator.addColleague(user1);mediator.addColleague(user2);user1.send(Hello Bob!);user2.send(Hi Alice!);}
}
优点
降低耦合性同事对象不需要直接引用彼此减少了依赖关系。集中管理所有的交互逻辑集中在中介者中易于维护和修改。灵活性可以方便地添加新的同事类或修改交互逻辑而不需要改变其他类。
缺点
中介者复杂性中介者可能会变得复杂尤其是当它需要处理多个同事对象时。扩展困难添加新的同事类可能需要对中介者进行修改从而影响系统的灵活性。
使用场景
当多个对象之间的通信需要被集中控制时。当系统中存在大量同事对象且它们之间的交互复杂时。当希望减少类之间的依赖关系提升系统的可维护性时。