我想创建一个类R
,它将观察类S
的所有实例,也就是说,我正在使用观察者可观察模式。我确信没有必要拥有类 R
的多个实例。这就是为什么我将 R 的所有成员设置为静态的。但是,我不确定这是否是设计类(class)的正确方法。 Observable
的 public void addObserver(Observer o)
方法需要一个对象而不是静态类。如果我创建一个 R
实例以便将其传递给 addObserver
可以吗?它是否以任何方式违反了 Observable-Observer 模式?
最佳答案
即使您不需要 R
的多个实例(现在),您也不必也不应该将 R
设计为仅包含静态
成员。程序设计可能规定仅使用一个 R
实例。有些人甚至建议使用单例模式以编程方式强制执行。
The public void addObserver(Observer o) method of Observable needs an object and not a static class
短语静态类
通常引用一个被声明为静态的内部类,以表明它可以在没有封闭的外部类实例的情况下存在。我认为您错误地使用了这个短语。
Is it okay if I create an instance of R only so that I can pass it to addObserver ?
是的,当然。仅仅因为您以所有成员都是静态的并因此属于该类(由类加载器加载)的方式声明了 R,并不意味着您可以不要根据需要构造和使用尽可能多的类实例。
Does it violate the Observable-Observer pattern in any way ?
只要R 实现了 Observer
,就不会。事实上,同一个观察者观察多个可观察对象并不异常。
关于java - 实现 java.util.Observer 的类中的所有静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655772/