J2ME 中的观察者模式

发布于 2024-10-31 12:02:56 字数 125 浏览 3 评论 0原文

我知道 J2ME 不支持观察者模式,因为 J2ME 中不支持 Observer 和 Observable。
那么,在 J2ME 中使用观察者模式有什么解决办法吗? 我想让一个线程执行一些逻辑,当它完成工作时通知主线程更新 UI。

I know that Observer pattern is not supported in the J2ME as Observer and Observable are not in the J2ME.
So, is there any work around to using Observer pattern in J2ME?
I want to make a Thread making some logic and when it finish its work notify the main thread to update the UI.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

咆哮 2024-11-07 12:02:56

观察者/可观察模式不需要 Java 库中的特定类。所有这些类所做的就是为您实现观察者模式的某些部分。您可以通过自己管理观察者来使自己的类可观察。请注意,以下内容并没有解释如何让一个线程等待另一个线程——这是一个不同的问题。

您可以像这样编写侦听器接口:

public interface FooListener {
    void fooChanged(int newValue);
}

您可以在一个类中管理一组侦听器,如下所示:

public class Foo {
    private int value = 0;
    private final Collection<FooListener> listeners = new ArrayList<FooListener>();

    public void addFooListener(FooListener listener) {
        listeners.add(listener);
    }

    public void removeFooListener(FooListener listener) {
        listeners.remove(listener);
    }

    public void change(int newValue) {
        value = newValue();

        for (FooListener l : listeners) {
            l.fooChanged(newValue);
        }
    }

    public int getValue() {
        return value;
    }
}

这是侦听器实现的一个简单示例。

public class PrintingFooListener implements FooListener {
    public void fooChanged(int newValue) {
        System.out.println("New Foo value: " + newValue);
    }
}

以下程序将打印 New Foo value: 10

public static void main(String[] args) {
    PrintingFooListener myListener = new PrintingFooListener();
    Foo myFoo = new Foo();
    foo.addFooListener(myListener);
    foo.change(10);
}

The observer/observable pattern does not require specific classes from the Java library. All those classes do is implement some parts of the observer pattern for you. You can make your own classes observable by managing observers yourself. Note that the following doesn't explain how to make one thread wait for another -- that's a different problem.

You can write a listener interface like this:

public interface FooListener {
    void fooChanged(int newValue);
}

You can manage a set of listeners in a class like this:

public class Foo {
    private int value = 0;
    private final Collection<FooListener> listeners = new ArrayList<FooListener>();

    public void addFooListener(FooListener listener) {
        listeners.add(listener);
    }

    public void removeFooListener(FooListener listener) {
        listeners.remove(listener);
    }

    public void change(int newValue) {
        value = newValue();

        for (FooListener l : listeners) {
            l.fooChanged(newValue);
        }
    }

    public int getValue() {
        return value;
    }
}

Here's a simple example of a listener implementation.

public class PrintingFooListener implements FooListener {
    public void fooChanged(int newValue) {
        System.out.println("New Foo value: " + newValue);
    }
}

The following program would print New Foo value: 10.

public static void main(String[] args) {
    PrintingFooListener myListener = new PrintingFooListener();
    Foo myFoo = new Foo();
    foo.addFooListener(myListener);
    foo.change(10);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文