他の多くの人と同じように、MVC パターンの理解に問題があります。より正確に言うと、Grail Web アプリについて話しましょう。私の理解では、モデルはサービスとドメイン クラスです。コントローラーの典型的な使用法は次のようになります (実際には、この特定の使用法では、コントローラーから Person.get(id) を直接呼び出すことができますが、サービスを介して呼び出すとします):
def getPerson(String id){
Person person = peopleService.get(id);
render(view: "person", model: person)
}
この場合、サービス メソッドがドメイン オブジェクトを返していることが判明しました。これは、モデルの一部です。ただし、サービス メソッドがドメイン オブジェクトを変更しない、または変更するが、ブール値などを返す場合があります。
def savePerson(Person p){
boolean saved = peopleService.save(p);
render(view: "actionresult", model: saved)
}
この場合、ブール値はモデルの一部ではありませんが、レンダリング メソッドでモデルとして名前が付けられます。
そこで、私には次の 3 つの仮説があります。
- 2 つのモデルがあります。ビジネス ロジックを担当するアプリケーション層モデルと、ビューのレンダリングに使用されるデータです。
- MVC は完全にプレゼンテーション レイヤー パターンであり、ビジネス ロジック レイヤーとは何の関係もありません。この場合、モデルはビューによって表示される単なるデータです。
- モデルはサービス レイヤーとドメイン クラスであり、コントローラーはサービス メソッド呼び出しを介してモデルの更新をトリガーし、ビューのレンダリングに使用されるデータは何らかの形でモデルの状態を表す必要があるため、レンダリング関数でモデルとも呼ばれます。
あなたはそれについてどう思いますか?