繁体   English   中英

如何在Play中实现用户特定的类型通用行为?

[英]How to realize user-specific type-generic behaviour in Play?

假设我要按以下方式构建应用程序:用户可以登录并创建一些观察机制,例如,每小时查找一个Twitter主题标签或检查一些股票。

  1. 您必须具有一个User对象,例如,保存电子邮件和密码以供用户登录。
  2. 您必须具有一些Java代码,例如为股票和Twitter建立一个HttpURLConnection。
  3. 您必须为这些服务保存用户特定的设置:例如,userA需要#hashtag1但user2需要#anotherTag

出于科学目的,我不想让这些观察者(推特,股票等等)拥有所有可能的组合,而是拥有一个抽象类“ Observer”,它既可以扩展“ TwitterObserver”又可以扩展“ StocksObserver”。

我面临的问题是:

我无法例如选择所有观察者(无论类型如何),对其进行迭代,检查是否已修改并对用户特定的行为做出反应。 换句话说:我不能将通用的“观察者”类与包含用于该观察者的用户特定设置的类结合使用。

是否有任何设计模式或最佳实践来对此行为建模? 我简直不敢那么难。

我很感谢每一个提示! 感谢大伙们

在您的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
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM