Swing und MVC: Bsp.


Verallgemeinerung durch Abstrakte Klassen

Damit man beliebige Varianten von Model- und Komponentenklassen bequem erzeugen kann, wird der Kernbestand dieser Klassen in Abstrakten Klassen zusammengefasst. Von diesen werden die gewünschten Klassen abgeleitet, indem nur noch die spezifische Logik der konkreten Klasse implementiert wird.

Das Model zum Aufzählen der Wochentage Mo..So sieht also folgendermassen aus:

/*
 *  Klasse mvc.TagModel
 *
 * Version 1.0
 *
 * 9.6.01
 *
 * www.AndreasGoedel.de
 *
 */
package mvc;

/**
 * Model mit Namen der Wochentage Mon..So.
 *
 */
public class TagModel extends AbstractZaehlerModel{

    /* Array der Tage im Model */
    private String tage[] = {"Mon", "Die", "Mi", "Do", "Fr", "Sa", "So" };

    /**
     * Konstruktor.
     * Setzt min, max, val und incstep.
     */
    public TagModel(){

        min = 0;
        max = 6;
        incstep = 1;
        val = min;
    }

    /**
     * Den Wert als Objekt bringen.
     * Zur Weiterverarbeitung downcast o.ä. erforderlich.
     */
    public Object getValue(){
        return tage[val];
    }
}

Der Zusammenhang aller Klassen und Interfaces ist wie folgt:

Verallgemeinerte Zaehler

Das Demo zeigt Zaehler mit 3 unterschiedlichen Modellen: und zwar jeweils als JFrame zum rauf- und runterzählen, insgesamt also 6 Demos. Die 2 Zaehler-Klassen sind als Ableitungen der Klasse AbstractZaehler implementiert, die 3 Model-Klassen als Ableitungen von AbstractZaehlerModel. Es gibt eine 4te Model-Klasse DefaultZaehlerModel, die man als 0815-Zaehler einsetzen kann ( hier nicht eingesetzt ).

Die folgenden 6 Konstruktor-Aufrufe in der Klasse MVCDemo erzeugen also die 6 Demos:

 new ButtonZaehler( new ZahlModel())

 new ButtonZaehler( new TagModel())

 new ButtonZaehler( new LogarModel())

 new SliderZaehler( new ZahlModel())

 new SliderZaehler( new TagModel())

 new SliderZaehler( new LogarModel())
Hier das Bild der 6 Demos


Literaturhinweis:

John D. Mitchell, Implement callback routines in Java

Amy Fowler, A Swing Architecture Overview