0

我想创建一个类R来观察 class 的所有实例S,也就是说,我正在使用观察者可观察模式。没有必要拥有多个 class 实例R,我确信这一点。这就是为什么我将所有成员R设为静态的原因。但是,我不确定这是否是设计课程的正确方法。的public void addObserver(Observer o)方法Observable需要一个对象而不是静态类。如果我创建一个Ronly 的实例以便我可以将它传递给 ,可以addObserver吗?它是否以任何方式违反了 Observable-Observer 模式?

4

3 回答 3

1

即使您不需要R(现在)的多个实例,您也不必也不应该设计R为仅由static成员组成。程序设计可以规定只使用一个R. 有些人甚至会建议使用单例模式以编程方式强制执行它。

Observable 的 public void addObserver(Observer o) 方法需要一个对象而不是静态类

该短语static class通常引用一个声明为静态的内部类,以表明它可以在没有封闭的外部类实例的情况下存在。我认为您错误地使用了这个短语。

如果我只创建一个 R 实例以便我可以将它传递给 addObserver 可以吗?

是的,当然。仅仅因为您R以这样一种方式声明了所有成员都是static并因此属于该类(由 ClassLoader 加载),并不意味着您不能构造和使用任意数量的类实例。

它是否以任何方式违反了 Observable-Observer 模式?

只要R implements Observer,不。事实上,同一个观察者观察多个可观察者并没有异常。

于 2013-03-27T09:58:25.493 回答
0

作为一般规则,避免使用静态方法和字段。也就是说,如果您只能与实例成员一起生活,请这样做。静态成员是邪恶的,有时是必要的,但从不想要。

于 2013-03-27T10:19:57.323 回答
0

不,不违反。谁知道将来你可能会有其他观察者。您仍然可以拥有由非静态方法更新的静态字段。因此静态字段的状态由所有实例共享。(单态模式)

于 2013-03-27T10:16:26.197 回答