2009-05-03 9 views

Répondre

2

Jetez un oeil à la MVC pattern. Idéalement, vous voulez présenter votre application de telle sorte que différents composants de l'interface graphique puissent l'utiliser (imaginez plus tard en fournissant une vue web/servlet de votre application, ou une interface de ligne de commande). Cette exigence interdit à votre application d'avoir des connaissances implicites sur Swing.

+0

Notez que dans ce cas, il est correct d'implémenter la vue et le contrôleur dans le même objet (comme dans la solution 2 de l'OP). La séparation entre vue et contrôleur est seulement bien définie dans les applications Web où le navigateur est la vue. –

+2

Il n'y a rien de spécial à propos des applications Web par rapport à. MVC –

+0

La seule différence est que les clients non Web Java (par exemple Swing/AWT) peuvent utiliser MVC si vous le souhaitez, mais historiquement et de manière réaliste, les applications Web doivent utiliser MVC pour être des solutions viables. – Wintermut3

0

Oui, le modèle MVC vous aidera. Vous voulez vraiment supprimer le couplage étroit entre les deux composants. Ou à tout le moins, aller avec ce dernier, ce qui signifie:

public GUI { 
    public GUI() { 
     App gui = new App(this) 
    } 
} 

De cette façon, atleast votre logique d'application ne repose pas, ou est lié, vous GUI.

1

Les réponses actuelles sont toutes bonnes, mais il y a une chose très importante ici: Vous avez le tag "Multithreaded" mais personne ne l'a encore abordé. Vous voulez certainement penser au "C" dans MVC comme quelque chose qui sera enfilé et qui pourrait même vouloir suivre le Pattern Design Pattern via une interface Manager et peut-être même une interface View - l'utilisation d'Interfaces vous aidera à élargir vos options même plus pour le refactoring futur, ou même des refontes. Dans le passé, j'ai utilisé java.util.observer et java.util.observable - le modèle MVC original en Java:) - pour faire face aux problèmes de communication. N'oubliez pas de ne pas bloquer votre thread principal ou votre interface graphique va se bloquer. Oui MVC est un bon début mais dans l'App-> GUI vous décrivez il y a un peu plus que juste MVC, Pensez à l'interface graphique entière comme vue pour votre application, modèle sera plus que probablement une sorte de Dataset (DataBase, flatfile , informations d'état) et le contrôleur de votre application. Gardez à l'esprit l'interface graphique plus que probable aura au moins une interface à elle.

Questions connexes