0

可能重复:
来自受限层的 Java 调用方法

免得说我有这个:

package org.service;
import org.core;

public class Service()
{
    public void init()
    {
        Core core = new Core();
        core.callbackFunction();
    }
    public void support()
    {
         ...
    }
}

package org.core
public class Core()
{
    public void callbackFunction()
    {
        ...
    }

    public void useSerivice()
    {
        ...
    }
}
  • 服务导入核心
  • 核心不得导入服务

当调用 Service 中的 init() 方法时,它会调用 core.callbackFunction() 方法。

是否可以为 callbackFunction 提供一个对 Service 方法的引用,Core 在执行他的 support() 方法时可以触发该引用。

例如:

当调用来自 Core 的 support() 方法时,它会触发来自 Service 的调用方法。调用的方法列表由 Service 在调用 Core 的 callbackFunction() 方法时提供。

我希望我的问题是可以理解的。

我正在使用 Spring 和 Seam Fw。

4

1 回答 1

1

下面的设计怎么样?您bar()Service类中的实现可以根据需要调用其他方法。

public interface Foo {
    void bar();
}

public class Service implements Foo {
    public void init() {
        Core core = new Core();
        core.callbackFunction(this);
    }

    @Override
    public bar() {
        // impl here
    }
}

public class Core() {

    private Foo foo;

    public void callbackFunction(Foo foo) {
        this.foo = foo;
    }

    public void useService() {
        if (foo != null) {
            foo.bar();
        } else {
            // Uh-oh.
        }
    }
}

我还强烈建议Foo在类的构造函数中传递实例Core以避免需要if (foo != null)测试。

于 2012-11-22T11:03:20.263 回答