1

http://www.vainolo.com/tutorials/のチュートリアルでは、モデルの位置がモデルに保存されています。すべてのデータをファイルに保存し、ファイルをロードするときに同じビューを取得したい。

この質問に対する答えを探していると、もう1つ重要な質問があります。それ
は、GEFは本当にMVCフレームワークなのかということです。

GEFコントローラーは、MVCコントローラーの役割がEditPartから取得されることを通知します。指定されたオブジェクトを作成します。
に関しては、コントローラーはビューパーツを保持しますが、mvcパターンは、コントローラーがユーザーの操作にのみ反応してビューに通知することを示しています。更新する必要があります。EditPartの一部であり、変更 されるため、次のコードは間違っています。

public void refreshVisuals(){
    IPersonFigure figure = (IPersonFigure)getFigure();
    Person model = (Person)getModel();
    figure.setName(model.getName());
    figure.setSurname(model.getSurname());
}

ウィキペディアに関しては、ビューにはモデルのオブザーバーが含まれているため、GEFからの次の文は間違っていますね。EditPartは、実際のモデルの状態をビューに同期し、オブザーバーを実装します

MVCパターンでは、コントローラーはモデルの変更をリッスンする必要があります。GEFでは、EditPartsはコントローラーであるため、モデルをリッスンして、モデルの新しい状態に従ってビューを更新する必要があります。

では、何が正しいのでしょうか?

クロスポストを防ぐには、http://www.eclipse.org/forums/index.php/m/755178/を参照してください

4

1 に答える 1

2

ウィキペディアには、MVCに関する記事の冒頭に、「MVCにはさまざまなフレーバーがあります(MVCの概要)。ビューがモデルを直接読み取ってそれ自体を更新できる場合もあれば、コントローラーによって行われる場合もあります。

MVCが提供する主要な概念は、プレゼンテーションをビューから切り離すことです。ビューにはロジックが含まれていてはなりません。モデルへの変更はコントローラーによって実行され、モデルが変更されるとビューへの変更が発生します。ただし、これは、モデルが変更されたときにコントローラーがビューを更新することができないという意味ではありません。誰かがそれをしなければなりませんよね?個人的には、モデルからビューを直接読み取ることは、依存しすぎてしまうため、良い習慣ではないと思います。そのモデルとビューは完全に分離する必要があります。これは、モデルに変更を加える必要がある場合(たとえば、フィールドが実際のフィールドから計算されるフィールドに変更される場合)に最適です。ビューを変更する必要はありません(ただし、コントローラーを変更する必要がある場合もありますが、これは通常です。より簡単に)。

これで問題が解決することを願っています。

于 2011-11-08T09:55:21.450 に答える