java - 中介者模式的限制

标签 java design-patterns mediator

有没有办法在“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接口(interface)拆分为单独的接口(interface),对操作进行分组。

如果您需要对此进行细粒度控制,接口(interface)继承就可以。

ConcreteMediator可以实现多个接口(interface)。不要对同事使用继承,并将 ConcreteMediator 作为 您将中介器接口(interface)拆分成的接口(interface)之一的引用类型。

关于java - 中介者模式的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51419797/

相关文章:

java - Android应用使用Socket收发消息 :

java - 路径层次结构中的后退一步

c# - MediatR 和 SimpleInjector 的依赖范围问题

java - jUnit - 如何断言继承的方法被调用?

java - 尝试将 Hyperledger Fabric SDK 与 Spring boot 集成时出现以下错误

java - 部分可变的 API 类,具有供客户端使用的通用变量持有者

java - 关于状态的面向对象编程

design-patterns - "Brokered definition set"设计模式——众所周知的另一个名字?

c++ - Qt 中的多选和非多选复选框

javascript - 在脚本中介器 esb wso2 中获取错误 'Cannot read property "长度“来自未定义”