什么样的设计模式适合我的场景

时间:2017-05-03 22:29:47

标签: java oop

我有两个班级 - A班和B班。

A类从上层接收消息,我想将此消息转发给B类进行处理。当B处理此消息时,它将更新其自己的状态并生成一些事件。 A类中有一个方法可以将这些事件发送到上层。

我无法在A类中更改sendEventToUpperLayer()。那么如何将B类中生成的事件及其状态返回给A类?我应该简单地丢弃B类,并将B类的逻辑移到A类中吗?

public class A {
    private B b;
    private void processMessage(Message) {
        b.processMessage(Message);
    }

    private void sendEventToUpperLayer() {
    }
}

public class B {
    public void processMessage(Message) {
        // It will generate a few events and update b's state.
        // All these events and b's state will need to use class A's method of sendEventToUpperLayer() to forward to upper layer.
    }
}

1 个答案:

答案 0 :(得分:0)

class A实现一个用于发送消息的接口,一个声明sendEventToUpperLayer或更通用命名的版本(您的实现然后委托给现有的sendEventToUpperLayer方法)。

然后将class A传递给class B的{​​{1}}方法作为参数,B类接受该参数作为命名接口(不直接作为A类)。

然后,B类可以根据需要多次调用类A的必要方法,因为它是一个接口,不需要直接使用A类,并且可以进行适当的单元测试等。

如果合适,您还可以将类A(通过前面提到的接口)传递给B类构造函数中的B类,如果B类实例将始终引用其回调的同一个A类实例