2010-01-28 8 views
0

Par exemple, dans une application IDE, disons pour C#, il y a 2 vues ClassView et TextView.MVC - Multiple Model One Data

Dans ClassView, nous devons afficher les informations de classe de manière hiérarchique, où, comme dans TextView, le code de cette classe est affiché.

ClassView doit interroger des classes, des méthodes, des propriétés, des champs, etc. tandis que Text View interroge les lignes du code.

Les deux vues sont modifiables. Le changement d'une vue doit également être reflété dans l'autre vue. Par conséquent, la vue de classe requiert un modèle et la vue de texte en requiert une autre, mais les données sous-jacentes sont identiques.

Existe-t-il un modèle de conception pour résoudre un tel problème?

Merci d'avance.

Répondre

0

Certainement un modèle MVC peut être hiérarchique. Si vos données sont toutes contenues dans un seul fichier, peut-être n'avez-vous pas vraiment besoin de plusieurs modèles pour votre application? Et pourquoi pas:

namespace MyNamespace 
    { 
    public class CodeFile 
    { 
     /// <summary> 
     /// A list of contained classes for the Class view 
     /// </summary> 
     public List<CodeClass> Classes { get; set; } 
     public CodeFile() 
     { 
      Classes = new List<CodeClass>(); 
     } 
     public string ToString() 
     { 
      // send output to Text view 
     } 
    } 

    public class CodeClass 
    { 
     public string ClassName {get; set;} 
     public List<CodeProperty> Properties {get; set;} 
     public List<CodeMethod> Methods {get;set;} 
     public CodeClass(string className) 
     { 
      ClassName = className; 
      Properties = new List<CodeProperty>(); 
      Methods = new List<CodeMethod>(); 
     } 
    } 

    public class CodeMethod 
    { 
     public string MethodName { get; set; } 
    } 

    public class CodeProperty 
    { 
     public string PropertyName 
    } 


} 
0

Model View Controller :)

L'erreur dans votre question est que vos données sont effectivement mis en correspondance sur votre modèle.

Vous pouvez avoir 2 vues (classview et textview) et elles fonctionnent avec un seul modèle commun. Le contrôleur peut mettre à jour une vue quand une autre change le modèle.

0

Vous l'avez marqué vous-même avec MVC ... Les données sous-jacentes sont le modèle, la vue Class et la vue de texte agissent en tant que vues/contrôleurs. Le modèle envoie des événements à ses vues, pour s'assurer que les changements dans une vue sont reflétés dans l'autre.

0

Rien dans l'architecture MVC n'empêche d'écrire plusieurs hiérarchies de modèles qui interagissent avec le même magasin de données sous-jacent.

Vous devriez juste contrôleurs/Vues qui interagissent avec le modèle A, et différents contrôleurs/Vues qui interagissent avec le modèle B.

+0

Merci pour la réponse rapide. Ainsi, lorsque le modèle A a changé (via la vue A), il indique à la vue B de se mettre à jour automatiquement. Je veux dire est le suivant correct. Affichage A indique Ctrl'er A indique au modèle A de modifier certaines données. Le modèle A indique au modèle commun de changer les données. Le modèle commun indique à tous les observateurs enregistrés (dans ce cas, le modèle B) de mettre à jour la vue. Le modèle B informe le Ctrl'er B informe View B pour mettre à jour. – Ajay

+0

@Ajay: Il me manque peut-être quelque chose dans votre question, mais un Modèle n'est rien de plus qu'une représentation logique de vos données commerciales sous-jacentes telles qu'elles existent actuellement, généralement dans une base de données quelque part. Si les données sous-jacentes ont changé, le suivi des instances de la classe modèle représentant ces données sera également modifié. Les détails de la mise en œuvre dépendent de la nature de votre magasin de données, que le modèle A connaisse le modèle B, que cela se passe dans un ou plusieurs processus, quelle langue, plateforme, etc. –

+0

Les données sont un simple fichier . Tous les modèles sont dans le même processus. Langue: C#, Plate-forme: .NET. Ce que je voulais savoir, c'est dans un scénario où il y a plusieurs modèles pour les mêmes données, si les modèles peuvent informer les autres modèles de la modification des données. Est-ce que le modèle MVC le permet ou existe-t-il un autre modèle qui fait un meilleur travail. Peut également le modèle MVC être hiérarchique. c'est-à-dire un modèle étant un modèle à un autre modèle. E.g. Données-> Modèle A-> Modèle 1-> Vue 1 Données-> Modèle A-> Modèle 2-> Vue 2 – Ajay

Questions connexes