【发布时间】:2011-07-18 23:05:04
【问题描述】:
一个程序有一个视图和一个模型(松散地使用术语),其中视图正在观察模型。模型有一些状态,视图有一些映射到状态的 jpanel(有些状态每个都有几个对应的 jpanel)。使用卡片布局,一次显示一个 jpanel,状态更改或状态内的更改会将当前 jpanel 换成另一个。 program 有效,但是对于视图和模型来说,假设恰好有 5 个状态和 7 个视图似乎是不好的做法。这怎么可能实现。
class Model implements Observable {
State A, B, C;
final int VIEW_A = 0, VIEW_B = 1, VIEW_C0 = 2, VIEW_C1 = 3;
int stateView;
//argument will be one of the final ints above
void setStateView(int stateView) {
this.stateView = stateView;
notifyObservers();
}
void getStateView() { return stateView; }
}
class View implements Observer {
void update(Observable o) {
//will use one of the ints above to identify the correct jPanel to display
setJPanel ( o.getStateView() );
}
}
我认识到上面的代码是一种糟糕的处理方式。这就是我在这里的原因。帮忙?
【问题讨论】:
标签: java model-view-controller interface observer-pattern