所有实现类中的java启动方法
我对Java有点陌生,有一个相当简单的问题:
我有一个接口,带有一个方法:
public interface Interface_Updatable {
public void updateViewModel();
}
我在几个类中实现了这个接口。当然,每个类都有这个方法updateViewModel
编辑:我在一个主函数中实例化这些类。这里我需要为实现接口的所有对象调用updateViewModel
的代码
有没有一种简单的方法可以结合使用?我不想从每个对象实例分别调用每个方法并保持更新。长期保持更新可能会导致错误
# 1 楼答案
在实现这个接口的所有类上调用这个方法并不容易。问题是,您需要以某种方式跟踪实现该接口的所有类
一种可能的面向对象方法是将一个列表传递给函数,该列表包含实现
Interface_Updateable
接口的类的实例,然后对该列表中的每个对象调用updateViewModel
:# 2 楼答案
缩写形式是:no,没有简单的方法“在实现此接口的类的所有实例上调用此方法”
至少不是以一种理智和可维护的方式
那么你应该怎么做呢
实际上,你几乎从来都不想“在所有实例上调用它”,但在应该触发更新的事物和应该触发更新的实例之间,你有某种关系
例如,方法的命名表明
Interface_Updatable
的实例与视图模型相关。因此,如果他们“关心”视图模型的更改,他们可以通过执行theViewModel.registerForUpdates(this)
,视图模型可以保留这样注册的所有对象的列表,然后循环所有实例,并对每个实例调用updateViewModel
(当然,在适当的情况下,还需要确保取消注册)这是工作中的经典听众模式
但高层次的答案是:你几乎从来都不想在“所有实例”上调用某个东西,相反,你想调用它的实例彼此之间有某种关系,你需要使这种关系显式(通过上面描述的某种注册机制)