2010-11-28 14 views
0

J'ai classe qui contient des éléments d'arbre pour un arbre. Supposons que le constructeur ressemble à ce ViewTreeItem(List item) et peut être appelé comme celui-ciLa vue contient un objet du modèle dans un modèle MVC, est-ce OK?

for(List l : model.getLists()) 
    getTree().add(new ViewTreeItem(l)); 

Mon contrôleur ControllerTreeItem utilise la référence List item pour modifier la liste directement au lieu d'appeler à modéliser pour faire le travail.

Est-ce OK de changer le modèle de cette façon? Sinon, comment pourrais-je le faire d'une manière alternative?

Répondre

0

le but de MVC est de rendre la conception flexible. Je pense qu'il serait probablement mieux d'avoir une méthode dans le modèle que vous pouvez utiliser pour modifier la liste au lieu de la modifier directement, car cela annulerait le point entier d'utiliser le modèle MVC.

+0

Toutes les méthodes du modèle doivent-elles appeler la méthode notifyObservers()? ou est-ce que c'est ok pour eux de ne pas informer étant donné qu'une notification n'est pas nécessaire dans un cas particulier. – jax

+0

bien, vous avez seulement besoin d'aviser l'affichage lorsque vous voulez afficher les données à l'utilisateur. il n'est pas nécessaire de le faire si cela n'est pas nécessaire. Parce que le modèle maintient l'état du système, il suffit de le notifier uniquement lorsque vous souhaitez afficher une vue de mise à jour. sinon, il y a des frais généraux inutiles. –

0

en supposant que votre point de vue observe le modèle alors:

1) il est normal en vue de conserver une référence au modèle. 2) vous devez changer le modèle en appelant des méthodes dans le modèle et mettre à jour votre vue lorsque vos vues onUpdate (Modèle de modèle) est appelée.

+0

En fait, cette vue n'observe pas le modèle, car tous les éléments de l'arborescence sont détruits et actualisés lorsque la méthode notify est appelée. Je ne fais cela que lorsqu'un nouveau LISTE est sélectionné. – jax