java mvc可观察模式
问题描述:
我有3个类的名称是有代表性的,我打算使这个工作在mvc模式。java 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;
}
}
我期待这个按以下顺序
视图调用模型,进而模型调用观察者和观察者的工作设置的值在视图中。 但是,当我试图调用观察者时,它在模型中给了我一个空指针异常。 我做错了什么?
答
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();
}
}
这里的Observer模式的目的是什么? –
教授说:“写一个观察者模式”;) –
当你不遵循java标准时,你很难阅读你的代码: static model Model = new model(); 应该如下所示: static Model model = new Model(); 那么当你做model.show(); System.out可以工作,因为System.out是一个静态对象。 – n3wscott