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 の引数として、Core が support() メソッドを実行しているときにトリガーできる Service メソッドへの参照を提供することは可能ですか。

例えば:

Core からの support() メソッドが呼び出されると、Service からのメソッドの呼び出しがトリガーされます。呼び出されるメソッドのリストは、Core の callbackFunction() メソッドの呼び出し中に Service から提供されます。

私の質問が理解できることを願っています。

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のコンストラクターに渡すことを強くお勧めします。Coreif (foo != null)

于 2012-11-22T11:03:20.263 に答える