Kapselung Allgemeine Design- Frage

Qler

Mitglied
Hallo zusammen,

ich frage mich schon seit längerem, wie man eine Anwendung, die auf dem Konzept MVC/ MVP beruht, genau implementiert.

Zurzeit ist meine Standard Implementierung so:

attachment.php


Dabei stehen die Dateien mit einem 'I' am Anfang für ein Interface, welches die Funktionalität/ Methoden beschreibt.

Meine Klasse IView sieht dann meistens so aus:

Java:
public interface IView {
   public HasActionListener getButtonStart();
   public HasActionListener getButtonStop();

   public HasValue<String> getStartParams();
   public HasValue<String> getUserName();

   ...
}

Im package "impl" ist dann immer eine konkrete Implementierung des Interfaces (können auch mehrere sein).

Was ich mich frage:

- Ist es overkill, die ganzen Interfaces zu erstellen? Ich persönlich find es nützlich, da ich dann die View ganz leicht umschreiben kann, ggf. in Android oder GWT oder so schreiben kann, aber die Schnittstellen gleichbleiben

- Wie erstellt ihr eure Anwendungen? Benutzt ihr überhaupt so ein Art MVC/ MVP Pattern? Oder gibt es bessere/ zweckmäßigere?

Über Tipps/ Anregungen und eure Erfahrungen würde ich mich freuen!

So far...
 

Anhänge

  • mvc_demo.png
    mvc_demo.png
    7,6 KB · Aufrufe: 88
S

Spacerat

Gast
@kaetzacoatl: Ich nehme mal an, dass deine Aussage Interfaces nicht so pauschalisiert, wie's klingt. Sonst würde ich sie mir noch mal überlegen. Interfaces sind manchmal unabdingbar, z.B. wenn du bereits eine andere Klasse erweiterst.

Im MVC-Pattern sind Interfaces allerdings nicht so wichtig (maw.: Ja, Overkill), viel wichtiger ist, dass der Controller Instanzen der View und des Models kennt, während die letzteren beiden sich zwar nicht untereinander, wohl aber die Instanz des Controllers kennen. Utility-Methoden kann man, soweit sinnvoll, auch besser im Controller unterbringen.
 
J

JohannisderKaeufer

Gast
Ich benutze grundsätzlich keine
Interfaces, sondern abstrakte
Klassen, dort kann man dann
die wichtigsten Methoden gleich
einfügen.

Öhm, ja sehr sinnvoll.
Abstrakte Klassen machen wirklich nur sehr begrenzt Sinn. Und selbst dort können Sie sehr oft ersetzt werden.
Spätestens wenn ein Object von zwei abstrakten Klassen abgeleitet werden sollte hast du nichts gewonnen.

Der Vorteil von einem Interface ist, daß ein Object/Klasse mehrere Interface implementieren kann.

Von daher finde ich, daß es keine Gute Idee ist Interface zu ignorieren und komplett auf Abstrakte Klassen zu setzen.

Andererseits braucht es auch nicht für alles ein Interface. Wenn es nur eine Implementierung gibt und geben wird, dann reicht oft auch eine einzelne Klasse.
 

Qler

Mitglied
Ja die Beziehungen zwischen den einzelnen Komponenten sind vorhanden...

Die Idee bei den Interfaces ist halt, dem Controller jeweils die Methoden von View und Modell bereitzustellen, aber die konkrete Implementierung ggf. auszutauschen!

Im Endeffekt braucht man das vermutlich nicht, aber möchte ich z.B. ein Programm auf Android portieren, dann kann ich meine Desktop Version nehmen und (theoretisch) einfach nur eine neue View (für Android) schreiben und diese anstatt der Desktop- View verwenden. Mein Controller arbeitet weiterhin wie gewohnt!

Oder ist das einfach zu "komplex"?
Wie macht ihr sowas, wenn ihr eine Präsentations- Schicht baut?
Mit dem Hintergedanke, die Komponenten evtl zu erweitern, wiederzuverwenden und leicht- einarbeitbar zu machen.

Man kann abstrakte Klassen und Interfaces ja auch kombinieren... so ist es ja nicht... Im Endeffekt erstellt man halt ein Art "Framework"
 
Zuletzt bearbeitet:

kaetzacoatl

Bekanntes Mitglied
Ich meinte damit,
dass in solchen
Fällen abstrakte
Klassen nützlicher
sind, da man manche
Methoden ja oft
braucht.

Natürlich gibt es
Fälle, in denen
Interfaces viel
sinnvoller sind.
Aber ich denke
hier nicht.
 

Marco13

Top Contributor
Ich meinte damit,
dass in solchen
Fällen abstrakte
Klassen nützlicher
sind, da man manche
Methoden ja oft
braucht.

Schreibst
du
von
einem
Smart
phone
aus?

:joke:


Ich habe noch nie bereut, wenn ich "etwas" als Interface definiert habe. Ich habe aber einige Male bereut, wenn ich etwas als (abstrakte) Klasse definiert habe. (Mehrmals, weil ich mir bei den einzelnen Fällen immer sicherer schien: "Als DAvon KANN es ja NUR genau DIESE EINE Implementierung geben!" - Pustekuchen...).
Manche Leute propagieren auch, überhaupt keine abstrakten Klassen mehr zu verwenden (bzw. stellen sie ganz allgemein in Frage). Ich finde, sie können an manchen Stellen nützlich sein, aber wenn man sie in einer öffentlichen API auftauchen lassen will, sollte man sich das IMHO schon SEHR! genau überlegen.
 
N

non user

Gast
wenn du 5 entwickler frägst, wie sie mvc implementieren...
erhälst du 7 verschiedene methoden dazu.

ich kann mich an mehrere topics hier erinnern.
eine frage über ein "einfaches" beispiel in mvc; naja, die diskussion ging 6 seiten

ich hab in den letzten projekten gelernt:
falls du dir mehr gedanken über die architektur/pattern machen musst, als über das eigentliche
problem, dann machst du was falsch ;D
 

Qler

Mitglied
wenn du 5 entwickler frägst, wie sie mvc implementieren...
erhälst du 7 verschiedene methoden dazu.

ich kann mich an mehrere topics hier erinnern.
eine frage über ein "einfaches" beispiel in mvc; naja, die diskussion ging 6 seiten

ich hab in den letzten projekten gelernt:
falls du dir mehr gedanken über die architektur/pattern machen musst, als über das eigentliche
problem, dann machst du was falsch ;D

das war mir schon klar!

aber mir ist es wichtig, auch mal zu sehen, wie andere es so machen und dadurch selbst etwas zu lernen und vielleicht neue anregungen zu bekommen!

ich werd die topic mal suchen :D vielleicht kann ich da ja paar infos rausziehen!

zudem sollte vielleicht gesagt werden, dass ich eher eine MVP Architektur benutze!

aber danke!

[EDIT]
6 Seiten, schonmal nicht schlecht :D Ganz einfaches MVC-Beispiel?!
[/EDIT]
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
T Allgemeine Frage: GUI für 3D-Visualisierung Allgemeine Java-Themen 5
R Allgemeine Frage zu RMI bei MVC Allgemeine Java-Themen 2
M Allgemeine Frage: Wie lernt man Java / Programmieren von Grund auf? Allgemeine Java-Themen 7
A Methoden Allgemeine Java Frage Allgemeine Java-Themen 3
S Allgemeine parallelisierte Loesung um Daten im Hintergrund zu laden..? Allgemeine Java-Themen 6
J Allgemeine Fragen zu Vererbung Allgemeine Java-Themen 1
M Allgemeine Fragen meinerseits Allgemeine Java-Themen 4
D Ein paar allgemeine Fragen zu Java Allgemeine Java-Themen 19
I Allgemeine Herangehensweise bei Übernahme Allgemeine Java-Themen 19
J Erste Schritte Applet allgemeine Funkion Allgemeine Java-Themen 8
Semox Grapheneditor - Allgemeine Fragen zum Logikdesign Allgemeine Java-Themen 3
S Stream ReadLine() Allgemeine Frage Allgemeine Java-Themen 5
S allgemeine Datenbankschnittstelle für Webservice Allgemeine Java-Themen 72
M allgemeine frage zur plattformunabhängigkeit Allgemeine Java-Themen 2
S 2 Fragen allgemeine fragen zu final und interface Allgemeine Java-Themen 13
D Allgemeine Fragen zum Speichern Allgemeine Java-Themen 3
F allgemeine Fragen zu Java Allgemeine Java-Themen 9
M allgemeine Architekturfrage Allgemeine Java-Themen 4
J Ganz allgemeine Frage Allgemeine Java-Themen 3
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
S ArrayList Design Allgemeine Java-Themen 4
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
M Diverse Design-Fragen Allgemeine Java-Themen 6
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
T OOP Fehler im Design Allgemeine Java-Themen 9
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
R Parameter Adapter - Design Allgemeine Java-Themen 1
D Bezüglich Design meines Codes Allgemeine Java-Themen 1
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
S Java Design Frage Allgemeine Java-Themen 10
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
M OOP Design Frage Allgemeine Java-Themen 2
J Domain Driven Design - Modellierungsfrage Allgemeine Java-Themen 3
F Welches Design Pattern? Allgemeine Java-Themen 3
H MVC Design Allgemeine Java-Themen 9
J Swing Eigenes Button-design Allgemeine Java-Themen 2
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
C Gutes Code Design (3 Schichten Modell) Allgemeine Java-Themen 19
D Design Stations-Gitter Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
L Software-Design: Kommunikation mit SerialPort (RXTX) Allgemeine Java-Themen 2
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
G Design Patterns für Programm Allgemeine Java-Themen 3
I Wie populär ist Design by Contract in Java und was haltet ihr davon? Allgemeine Java-Themen 5
Landei Design-Problem Formel-Parser Allgemeine Java-Themen 10
J Aktionen im State-Design-Modell Allgemeine Java-Themen 3
S Design Oberfläche Allgemeine Java-Themen 2
L Design-Frage: Platzierung der Save-Methode Allgemeine Java-Themen 3
G Domain Driven Design Model Allgemeine Java-Themen 14
G konkretes Domain Driven Design Aggregate Allgemeine Java-Themen 2
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
B Design Problem Allgemeine Java-Themen 8
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
S Frage zum Design der Datenstruktur Allgemeine Java-Themen 10
D design gesucht - Angabe von zu ersetzenden substrings Allgemeine Java-Themen 2
D Design ohne Getter und Setter Allgemeine Java-Themen 8
D Design: on-the-fly-Parsing + Datenstrukturen Allgemeine Java-Themen 5
N Welches design pattern? Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10
T Design-Frage Allgemeine Java-Themen 14
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
S JToolBar Design Allgemeine Java-Themen 3
M Bildersyncronisierung - Design Patterns? Allgemeine Java-Themen 2
T Design - Exception in Thread Allgemeine Java-Themen 3
G Composite, Design Pattern, printTree Allgemeine Java-Themen 42
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
M Frage zum Design :: allgemein Allgemeine Java-Themen 6
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
U Frage zu DB Design Allgemeine Java-Themen 3
K Design / Implementierung Allgemeine Java-Themen 5
N Checkstyle - Design for Extension Allgemeine Java-Themen 4
F Design Pattern zur Realisierung von Mehrfachvererbung? Allgemeine Java-Themen 8
E Was ist ein gutes Design fuer meine Programm? Allgemeine Java-Themen 3
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
P Apple Design Allgemeine Java-Themen 5
S design frage Allgemeine Java-Themen 10
T Design-Tipp gesucht Allgemeine Java-Themen 2
M Design von Java Klassen Allgemeine Java-Themen 2
G java design von klassen und projekten Allgemeine Java-Themen 6
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
S Programmierstil / design Allgemeine Java-Themen 9
S Exception design Allgemeine Java-Themen 2
m@nu Exception-Design Allgemeine Java-Themen 4
R Design-Frage Allgemeine Java-Themen 9
N Hilfe beim Design Allgemeine Java-Themen 13
D Design Pattern: Singleton Allgemeine Java-Themen 4
Torres Design-Problem mit Jakarta Struts Allgemeine Java-Themen 2
A Anwendungs-Design (Plugin-Architektur) Allgemeine Java-Themen 4
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben