说我想构建一个如下应用程序: 用户可以登录并创建一些观察机制,例如查找推特标签或每小时检查一些股票。
出于科学目的,我不希望拥有这些观察者(推特,股票......)的所有可能组合,而是拥有“TwitterObserver”和“StocksObserver”扩展的抽象类“观察者”。
我面临的问题是:
我无法例如选择所有观察者(无论类型),迭代它们,检查是否已修改并对用户特定的行为做出反应。换句话说:我不能将通用的“Observer”类与具有此观察者的用户特定设置的类组合在一起。
是否有任何设计模式或最佳实践来模拟此行为?我无法相信这一切都很难。
我很感激每一个提示!谢谢你们
答案 0 :(得分:0)
在GenericObserver类中,创建一个应用程序作业来收集特定类型:
public class Observer {
// common properties and methods
public static List<Observer> observers = new ArrayList<Observer>();
public static void respondUserBehavior() {
for (Observer observer: observers) {
// call each observer to respond to user behavior
}
}
@OnApplicationStart
public static class ObserverCollector extends Job<?> {
@Override public void doJob() {
observers.addAll(play.Play.classLoader.getAssignableClasses(Observer.class));
// or you might want to loop through the list and filter out the abstract classes
}
}
}