具有功能接口的访问对象

时间:2018-02-22 16:20:32

标签: java functional-interface

以下情况:

我有三个班级A,B和C. A是某种父类,表示A具有对B实例的引用以及C. B没有对C实例的引用,C没有引用B的实例。

B有一个对象(在本例中是一个TextArea)需要被C访问.C有一些文本(作为其他一些方法的结果)应该从B添加到Object(TextArea)。

B应该实现公共功能接口。我的老板说我应该能够实现我的目标。不幸的是,因为他去度假,我不能问他有关打击的事。他只是留了一张便条。

编辑:找到我的问题的解决方案。以下工作正常。

A类:

package de.test;

public class A {
    static B b = new B();
    static C c = new C();

    private static void doSomething() {
        c.setChangeString(b.changeString());
    }

    public static void main(String... args) {
        doSomething();
        c.changeText();
        System.out.println(b.string);

    }

}

B组:

package de.test;

public class B {

    @FunctionalInterface
    public interface ChangeString {
        void setString(String string);
    }

    String string = "nein";

    public ChangeString changeString() {
        return (string) -> this.string = string;
    }

}

C类:

package de.test;

import de.test.B.ChangeString;

public class C {
    public ChangeString changeString;

    public void changeText() {
        this.changeString.setString("YES");
    }

    public void setChangeString(ChangeString changeString) {
        this.changeString = changeString;
    }
}

1 个答案:

答案 0 :(得分:1)

我建议你需要一个中间人Observer来向感兴趣的听众广播变化。

组件之间无法相互了解,但Observer模式可以使它们保持分离状态。

有人必须知道这种关系,但这种模式允许你将它集中在对象本身之外。