具有可观察模式的javamvc

具有可观察模式的javamvc,java,model-view-controller,observer-pattern,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

我有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的值。 但是当我试图调用观察器时,它在模型中给了我一个空指针异常。
我做错什么了吗???
setObserver
从未被调用,所以
observer
null

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();
  }
}

我应该在哪里设置setObserver??我不确定我应该在哪里打电话。考虑到你的代码,这不是一个容易回答的问题
Model
需要一个
Logger
的实例,但是
Logger
需要一个
View
的实例,并且您没有
View
的实例,因为您正在从
静态void main
方法调用所有内容。似乎您需要创建一个
视图
的实例,创建一个
记录器
传递
视图
实例的实例,以及创建一个
模型
传递
记录器
实例的实例。谢谢您,这很有用,我在类似的行中做了一些事情,它也起到了作用。。。谢谢你的回答…观察者模式的目的是什么?教授说“写一个观察者模式”;)当您不遵循java标准时,阅读代码是非常困难的:静态模型=新模型();应该如下所示:静态模型=新模型();然后,当您执行model.show()时,您就有了意义;因为System.out是一个静态对象,所以System.out可以工作。哈哈,不是因为教授让我。。。我正在学习如何使用MVC