Frage bezüglich MVC

tffasse

Mitglied
Hey,

da ich mich gerade mit der Entwicklung von GUIs mittels Swing beschäftige, hab ich mich mal an das MVC-Konzept gesetzt. Dabei ist folgendes herausgekommen:

Model:
Java:
package model;

public class Person {

	private String firstName;
	private String lastName;

	public Person() {}
	public Person(String firstname, String lastname) {
		this.firstName = firstname;
		this.lastName = lastname;
	}

	public Person getPersonById(long id) {
		Person person = new Person();
		person.setFirstName("Max");
		person.setLastName("Mustermann");
		return person;
	}

	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

}

Controller:
Java:
package controller;

import model.Person;

public class PersonController {

	private Person model;

	public PersonController(Person model) {
		this.model = model;
	}

	public Person getModel() {
		return model;
	}

	public void setModel(Person model) {
		this.model = model;
	}

}

View:
Java:
package view;

import controller.PersonController;

public class PersonView {

	private PersonController controller;

	public PersonView(PersonController controller) {
		this.controller = controller;
		this.showDetails();
	}

	private void showDetails() {
		System.out.println("Firstname: " + controller.getModel().getPersonById(1).getFirstName());
		System.out.println("Lastname: " + controller.getModel().getPersonById(1).getLastName());
	}

}

Hauptklasse:
Java:
package main;

import model.Person;
import view.PersonView;
import controller.PersonController;

public class MVCMain {

	public static void main(String[] args) {
		PersonController controller = new PersonController(new Person());
		PersonView view = new PersonView(controller);
	}

}

Hab ich das so richtig verstanden? Sollte man beispielsweise im Model nur ein Objekt darstellen und die 'getPersonById' Methode (welche später z.B. die Datenbankabfrage ausführt) in den Controller auslagern oder hat die dort nichts zu suchen?
Ist das auch korrekt, dass ich die Daten in der View vom Controller hole, oder ist es besser, vom Controller aus die View zu bestücken? :bahnhof:

Danke schonmal :)
 

Joose

Top Contributor
Sollte man beispielsweise im Model nur ein Objekt darstellen und die 'getPersonById' Methode (welche später z.B. die Datenbankabfrage ausführt) in den Controller auslagern oder hat die dort nichts zu suchen?

Die Methode "getPersonById" hat im Model nichts verloren, das Model ist nur eine Repräsentation deiner Daten. Woher es seine Daten kommen kann dem Model egal sein.
Solche Methode ("getPersonById") würden bei mir in ein DAO ausgelagert und der Controller hat Zugriff auf ein Objekt des "PersonDAO".

Ist das auch korrekt, dass ich die Daten in der View vom Controller hole, oder ist es besser, vom Controller aus die View zu bestücken? :bahnhof:

Nein das ist falsch! Dadurch ist deine View vom Controller abhängig. Wenn sich beim Controller etwas ändert wirst du hier deine View nachziehen müssen.
Die Daten sollten vom Controller an die View weitergegeben werden (über eine geeignete Schnittstelle). Stichwort: "Observer Pattern"

Und die Methodenverkettung in deiner View ist sowieso schlechter Code. Was ist wenn "getModel()", "getPersonById()" null zurückliefern?
Dann fliegst du einerseits mit einer NullPointerException und weißt andererseits nicht was sie verursacht. Da in der Zeile 2 Methoden Aufrufe existieren, welche die Exception verursacht haben könnten.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C SOLID Single Responsibility Priciple Frage Softwareentwicklung 2
K Frage OOP Softwareentwicklung 8
dgtKotlin Frage zu Kotlin source code Softwareentwicklung 5
A Frage zu testdriven developement Softwareentwicklung 1
H Regex Frage Softwareentwicklung 2
D Frage Schichtenarchitektur Softwareentwicklung 3
Shams Frage wegen guava-Eventbus. Softwareentwicklung 0
B Frage zu Schnittstellen (lose Kopplung) Softwareentwicklung 5
H Frage zur Stanford NLP-API Softwareentwicklung 2
E Frage zu Dekorator-Pattern Softwareentwicklung 2
O Frage zu Regulärer Ausdruck Softwareentwicklung 3
H WEKA - Frage zu Methode in Evaluation Softwareentwicklung 2
S Frage zu Zusicherungen: Softwareentwicklung 12
D Frage zu String Algorithmen / String Metric Softwareentwicklung 7
Airwolf89 Theoretische Frage - In Java Java-Programme schreiben Softwareentwicklung 5
D Frage zur Objektorientierung mit Interfaces Softwareentwicklung 9
B Theoretische Informatik Frage zu Formalismus RegExp Softwareentwicklung 12
Wepster LGPL, MPL Frage Softwareentwicklung 3
D Frage zur Benutzeroberflächenprogrammierung Softwareentwicklung 8
D Frage zu Klassendiagramm und Konstruktor (UML) Softwareentwicklung 3
M [OOP] Frage zu Methode-Namen / Funktionsweise Softwareentwicklung 9
P Frage zu Processing Softwareentwicklung 9
S Regex Frage Softwareentwicklung 4
D Frage zu meiner Vorgehensweise in einem Projekt Softwareentwicklung 5
A Frage zu GPL Softwareentwicklung 3
K Frage zu UML Aktivitätsdiagramm Softwareentwicklung 3
J Frage zu Lizenzrechten Softwareentwicklung 5
B bash frage Softwareentwicklung 6
F allgemeine exe frage Softwareentwicklung 10
G Frage zur LGPL? Softwareentwicklung 5
0x7F800000 "Wozu ist denn CSS / CSS2 gut" Dumme Frage? Softwareentwicklung 9
G Frage zur UML Softwareentwicklung 2
B Ajax Frage Softwareentwicklung 2
J Frage zu Relation Softwareentwicklung 2
W Frage zu a)Innere Klassen und b)OO Design Softwareentwicklung 13
G MVC Frage Softwareentwicklung 4
P Frage zu Prolog! Softwareentwicklung 7
E Frage zu Excel und Filtern Softwareentwicklung 4
Y OpenGL/C Frage - externe Funktionen Softwareentwicklung 5
G C# Frage Softwareentwicklung 12
T SQL, Feld mehrmals abfragen, IN Frage Softwareentwicklung 3
C Grundsätzliche Frage zur OOP bzw. zum MVC Softwareentwicklung 5
RaoulDuke Frage zu Datenmodel / Zugriff Softwareentwicklung 5
J Frage zu C Softwareentwicklung 2
H Frage ueber Prototype Pattern? Softwareentwicklung 2
L Noch 'ne Perl-Frage. Kehre dann auch reumütig zu Java zurück Softwareentwicklung 10
S Design-Frage: Wie viele Fassaden? Softwareentwicklung 4
J Frage zu MVC, Swing, Gui Softwareentwicklung 3
L Frage zu Beziehungen zwischen Klassen und UML Softwareentwicklung 10
T Frage zu Mysql Softwareentwicklung 3
C Mysql-Frage(Problem mit nicht durchgeführten Zugriff) Softwareentwicklung 5

Ähnliche Java Themen


Oben