MVC模式和观察者模式
MVC模式与观察者模式(在Swing中):
1:MVC是一种开发组件的方法,可以将数据的存储处理和数据的表示分离
MVC:
M(model,被观察者):负责存储和处理数据。包含增加,删除和通知观察者的方法,当模型中的数据改变时,通知相应视图(观察者)做出改变。
V(view,观察者):负责数据的可视化表示。
C(Controler):一般负责接收输入。
评:M其实也相当于观察者模式中的:被观察者;
V相当于观察者.
优势:
1:这样可以用多个不同形式的视图来显示一份数据。
2:视图和模型见相互独立。修改一个并不影响另一个。
注意:
1 : 要保证视图和模型之间的同步,即数据要一致。模型更新后,要通知视图更新。
2 : mvc不一定要分开,可以将vc合并到一个类中。也可以将mvc合并到一个类中.
【MVC模式和观察者模式】mvc合并的例子:
import java.util.ArrayList;
//Girl既是观察者,也是被观察者。
//当Girl感到饥饿时,他通知自己去大吃一顿
public class Girl implements AbstractWatcher,AbstractSubject{
String food = "Noodles";
ArrayList watchers = new ArrayList<>();
//保存观察者public Girl() {
// TODO Auto-generated constructor stub
this.addWatcher(this);
}public void feelHungry(){
notifyAllWatchers(this);
}@Override
public void addWatcher(AbstractWatcher watcher) {
// TODO Auto-generated method stub
watchers.add(watcher);
}@Override
public void removeWatcher(AbstractWatcher watcher) {
watchers.add(watcher);
}@Override
public void notifyAllWatchers(Object obj) {
// TODO Auto-generated method stub
for(AbstractWatcher w : watchers)
w.update(obj);
}@Override
public void update(Object obj) {
// TODO Auto-generated method stub
System.out.println("我要去大吃一顿,吃最喜欢吃的"+((Girl)obj).food);
}public static void main(String[] args) {
Girl girl = new Girl();
girl.feelHungry();
}
}
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福