Ява MVC с наблюдаемым рисунком - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть 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 Ответ

1 голос
/ 03 ноября 2011

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