2009-05-03 11 views

Antwort

2

Werfen Sie einen Blick auf die MVC pattern. Im Idealfall möchten Sie Ihre Anwendung so präsentieren, dass verschiedene GUI-Komponenten diese verwenden können (stellen Sie sich später eine Web-/Servlet-Ansicht Ihrer Anwendung oder eine Befehlszeilenschnittstelle vor). Diese Anforderung verbietet Ihrer Anwendung implizites Swing-Wissen.

+0

Beachten Sie, dass es in diesem Fall OK ist, die Ansicht und den Controller in demselben Objekt zu implementieren (wie in Lösung 2 des OP). Die Trennung zwischen Ansicht und Controller ist nur in Webanwendungen gut definiert, in denen der Browser die Ansicht ist. –

+2

Es gibt nichts Besonderes an Web-Anwendungen. MVC –

+0

Der einzige Unterschied besteht darin, dass Java-Nicht-Web-Clients (z. B. Swing/AWT) MVC verwenden können, wenn dies gewünscht wird, aber historisch und realistisch haben die Web-Anwendungen MVC als brauchbare Lösungen zu verwenden. – Wintermut3

0

Ja, das MVC-Muster wird helfen. Sie möchten wirklich die enge Kopplung zwischen den beiden Komponenten entfernen. Oder zumindest, gehen mit diesem, was bedeutet:

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

Auf diese Weise atleast Anwendungslogik lässt sich nicht verlassen, oder ist gebunden, Sie GUI.

1

Die aktuellen Antworten sind alle gut, aber es gibt eine sehr wichtige Sache hier: Sie haben das "Multithread" -Tag, aber niemand hat es bereits angesprochen. Sie wollen auf jeden Fall über das "C" in MVC als etwas denken, das eingefädelt wird und vielleicht sogar dem Manager Design Pattern über eine Manager-Schnittstelle und vielleicht sogar eine View-Schnittstelle folgen könnte - die Verwendung von Interfaces wird sogar Ihre Möglichkeiten erweitern mehr für zukünftige Refactoring oder sogar Redesigns. In der Vergangenheit habe ich java.util.observer und java.util.observable - das ursprüngliche MVC-Pattern überhaupt in Java: verwendet - um Kommunikationsprobleme zu bewältigen. Denken Sie daran, Ihren Haupt-Thread nicht zu blockieren, sonst wird Ihre GUI einfrieren. Ja, MVC ist ein guter Anfang, aber in der App-> GUI, die Sie beschreiben, gibt es ein bisschen mehr als nur MVC. Denken Sie an die gesamte GUI als eine Ansicht für Ihre App, Model wird höchstwahrscheinlich eine Art von Dataset (DataBase, Flatfile) sein , Statusinformationen) und der Controller Ihrer App. Denken Sie daran, dass die GUI mehr als wahrscheinlich zumindest eine Schnittstelle zu ihr haben wird.

Verwandte Themen