有一种方法可以在“ 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执行。实现此限制的最佳方法是什么?
答案 0 :(得分:1)
将Mediator界面拆分为单独的界面,进行分组操作。
如果您需要对此进行细粒度的控制,则可以继承接口。
ConcreteMediator可以实现多个接口。不要对同事使用继承,而将ConcreteMediator作为对象传递给其构造函数。 介体介面所分割成的介面的一种参照类型。