Wie kann man ein MVC basiertes Programm mit Threads verwirklichen?
Die Vorstellung wie die Klassen
main,model,view unc controller aussehen:
Die Vorstellung wie die Klassen
main,model,view unc controller aussehen:
Java:
package sudoku;
import model.Model;
import view.View;
import controller.Controller;
public class Main {
//Konstruktor
public static void main(String[] args) {
Model model = new Model();
View view = new View(model);
Controller controller = new Controller(model, view);
}
}
package model;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class Model {
// Attribute
private PropertyChangeSupport support;
// Konstruktor
public Model() {
support = new PropertyChangeSupport(this);
}
// Methoden
public void addPropertyChangeListener(PropertyChangeListener listener) {
support.addPropertyChangeListener(listener);
}
}
Java:
package view;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JFrame;
import model.Model;
public class View extends JFrame implements PropertyChangeListener {
// Attribute
private Model model;
// Konstruktor
public View(Model model) {
this.model = model;
/*Fenster anpassen*/
this.setVisible(true);
}
// Methoden
public void addAllActionListener(ActionListener actionListener) {
//Diese Methode wird für den Zugriff des Controllers benötigt
}
public void propertyChange(PropertyChangeEvent evt) {
/*Hier die auf Anweisung des Models zu geschehenen Veränderungen des
*Frames einfügen
*/
}
}
Java:
package controller;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import model.Model;
import view.View;
public class Controller implements ActionListener {
// Attribute
private Model model;
private View view;
// Konstruktor
public Controller(Model model, View view) {
this.model = model;
this.view = view;
view.addAllActionListener(this);
model.addPropertyChangeListener(view);
}
// Methoden
public void actionPerformed(ActionEvent e) {
/*Hier die möglichen Events berücksichtigen und dem Model mitteilen*/
}
}