一般的な MVC 設計に従ってエディターを開発しています。モデルはデータを保持し、コントローラーはデータの変更方法を認識し、ビューの問題はコントローラーを呼び出してモデルのクエリと変更を行います。議論のために、使用しましょう
public class Model {
public Object getStuff(String id);
public void setStuff(String id, Object value);
}
public interface Controller {
public void execute(Command command);
public void redo();
public void undo();
public void save();
public void load(File f);
}
コントローラーを実際に実装するクラスは、モデルへの参照を保持します。コマンドもそれにアクセスする必要があるため、void execute(Model m);
必要な場合にのみこのアクセスを実際に許可するインターフェイスをすべて提供する必要があります。
ただし、ビューは通常、モデルにアクセスする必要があります。ビュー自体を構築するとき、および後で変更をリッスンし、それに応じてビュー自体を更新する場合です。コントローラーに「Model getModel()」呼び出しを追加すると、execute()
メカニズムをバイパスする大きな誘惑が生じるのではないかと心配しています。このプロジェクトに取り組んでいる開発者は私だけではありません。このシナリオを考えると、「すべての変更がコントローラーを通過する」ポリシーをどのように適用しますか?
私が検討している2つの選択肢:
- そのような試みをキャッチする、実際のモデルの代わりに getModel() 呼び出しによって返される「ReadOnlyModel」と呼ばれるインターフェース。
- 物事を行う正しい方法について、次期開発者の手がかりとなる多くのコメント