Web应用程序中的观察者设计模式

时间:2014-07-07 17:04:31

标签: java facebook spring-mvc design-patterns

对不起英语。目前我在春天从事社交媒体项目的喜欢和评论功能,我想使用Observer Design Pattern.suppose一个用户喜欢或评论视频然后应该反映在所有用户,如Facebook 。 所以, 如果一个用户喜欢视频,那么我将如何更新所有活跃用户。

2 个答案:

答案 0 :(得分:0)

  1. 创建一个可观察的类,比如Notifier.java
  2. 维护通告程序类
  3. 中的用户列表(user.java)
  4. 创建每个用户对象后,将其添加到列表中。
  5. 用户类必须包含eventNotification方法。
  6. 在like或comment上,Notifier类必须调用列表中所有用户对象的eventNotification方法。

答案 1 :(得分:0)

如果您使用的是Java,则可以使用java.util.Observable和java.util.Observer接口

class User implements Observer {

    String name;
    public String getName() {return name;}

    public void update(Observable obs, Object x) {
      if (obs instanceof Video) {
        Video v = (Video)obs;
        String user = (String)x;
        System.out.println("User " + user.getName() + " liked video" + v.getName());
      }
    }
  }


  class Video extends Observable {

    String name;
    public String getName() {return name;}

    public Video(String name) {this.name = name; }

    public void like(User user) {
        // Notify observers of change
        setChanged();
        notifyObservers(user);
    }
  }

  public static void main(String[] av) {
    Video v = new Video("video1");
    User user1 = new User();
    User user2 = new User();
    User user3 = new User();
    v.addObserver(user1);
    v.addObserver(user2);
    v.addObserver(user3);
    v.like(user1);
  }