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

    推荐阅读