中介者模式的限制
Restrictions in Mediator Pattern
在'Mediator'设计模式中有实现访问控制的方法吗?
[REF]
例如,我有 3 个对象,它们通过调解器在它们之间进行通信:
public interface Mediator {
public void operationA();
public void operationB();
public void operationC();
}
public abstract class Colleague {
protected Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
public Mediator getMediator() {
return mediator;
}
}
public class ConcreteMediator implements Mediator() {
private ObjectA objectA;
private ObjectA objectB;
private ObjectA objectC;
public void operationA() {
objectA.operationA();
}
public void operationB() {
objectB.operationB();
}
public void operationC() {
objectC.operationC();
}
}
public class ObjectA extends Colleague {
public operationA() {
System.out.println("Operation A");
}
}
public class ObjectB extends Colleague {
public operationB() {
System.out.println("Operation B");
}
}
public class ObjectC extends Colleague {
public operationC() {
System.out.println("Operation C");
}
}
并且我希望操作A只能由对象C或对象A执行。实现此限制的最佳方法是什么?
将 Mediator 界面拆分为单独的界面,分组操作。
如果你需要细粒度的控制,接口继承就可以了。
ConcreteMediator 可以实现多个接口。不要对 Colleagues 使用继承并将 ConcreteMediator 作为
您将中介接口拆分成的接口之一的引用类型。
在'Mediator'设计模式中有实现访问控制的方法吗? [REF]
例如,我有 3 个对象,它们通过调解器在它们之间进行通信:
public interface Mediator {
public void operationA();
public void operationB();
public void operationC();
}
public abstract class Colleague {
protected Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
public Mediator getMediator() {
return mediator;
}
}
public class ConcreteMediator implements Mediator() {
private ObjectA objectA;
private ObjectA objectB;
private ObjectA objectC;
public void operationA() {
objectA.operationA();
}
public void operationB() {
objectB.operationB();
}
public void operationC() {
objectC.operationC();
}
}
public class ObjectA extends Colleague {
public operationA() {
System.out.println("Operation A");
}
}
public class ObjectB extends Colleague {
public operationB() {
System.out.println("Operation B");
}
}
public class ObjectC extends Colleague {
public operationC() {
System.out.println("Operation C");
}
}
并且我希望操作A只能由对象C或对象A执行。实现此限制的最佳方法是什么?
将 Mediator 界面拆分为单独的界面,分组操作。
如果你需要细粒度的控制,接口继承就可以了。
ConcreteMediator 可以实现多个接口。不要对 Colleagues 使用继承并将 ConcreteMediator 作为 您将中介接口拆分成的接口之一的引用类型。