MVCモードとオブザーバーモード
3335 ワード
MVCモードとオブザーバーモード(Swingで):
1:MVCはコンポーネントを開発する方法であり、データの記憶処理とデータの表示を分離することができる.
MVC:M(model,被観察者):データの格納と処理を担当する.モデル内のデータが変更されると、対応するビュー(オブジェクト)に変更を通知する追加、削除、およびオブジェクトに通知する方法が含まれます.
V(view,オブザーバー):データの可視化表示を担当する.
C(Controler):入力を受信するのが一般的です.
コメント:Mは実は観察者モードにも相当します:被観察者;Vは観察者に相当する.
利点:1:これにより、複数の異なる形式のビューでデータを表示できます.2:ビューとモデルは互いに独立しています.1つを変更しても、もう1つには影響しません.
注:1:ビューとモデルの同期、すなわちデータが一致することを保証します.モデルが更新されたら、ビューの更新を通知します.
2:mvcは必ずしも分離する必要はありません.vcをクラスにマージできます.mvcを1つのクラスに統合することもできる.
mvcマージの例:
1:MVCはコンポーネントを開発する方法であり、データの記憶処理とデータの表示を分離することができる.
MVC:M(model,被観察者):データの格納と処理を担当する.モデル内のデータが変更されると、対応するビュー(オブジェクト)に変更を通知する追加、削除、およびオブジェクトに通知する方法が含まれます.
V(view,オブザーバー):データの可視化表示を担当する.
C(Controler):入力を受信するのが一般的です.
コメント:Mは実は観察者モードにも相当します:被観察者;Vは観察者に相当する.
利点:1:これにより、複数の異なる形式のビューでデータを表示できます.2:ビューとモデルは互いに独立しています.1つを変更しても、もう1つには影響しません.
注:1:ビューとモデルの同期、すなわちデータが一致することを保証します.モデルが更新されたら、ビューの更新を通知します.
2:mvcは必ずしも分離する必要はありません.vcをクラスにマージできます.mvcを1つのクラスに統合することもできる.
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();
}
}