带有可观察模式的java mvc

时间:2011-11-03 16:24:37

标签: java model-view-controller observer-pattern

我有3个名字具有代表性的类,我打算以mvc模式进行这项工作。

以下是课程

public class view  {

 static int n;
 static model Model=new model();
    public static void main(String args[]){

        Model.show(5);
        System.out.println("The value is "+n);
    }

}




public class model {

    public interface Observer{
        public void show(int n);
    }

    protected Observer observer;
    public void setObserver(Observer observer) {
        this.observer = observer;
    }

    public void show(int n)
    {
        System.out.println(n+1);
        observer.show(5);
    }


}



public class Logger implements model.Observer {

    private view View;

    public Logger(view View) {
        this.View= View;
    }

    public void show(int n)
    {
        View.n=n;
    }

}

我希望这可以按以下顺序工作

视图调用模型,模型依次调用观察者,观察者在视图中设置n的值。 但是当我试图调用观察者时,它在模型中给了我一个空指针异常。 我做错了吗?

1 个答案:

答案 0 :(得分:1)

永远不会调用

setObserver,因此observernull

public class view  {

  static int n;
  model Model;

  private View(){
     Logger logger = new Logger(this);
     Model = new model();
     Model.setObserver(logger);
  }

  private void doIt(){

    Model.show(5);
    System.out.println("The value is "+n);
  }

  public static void main(String args[]){
      new View().doIt();
  }
}