homeSoftwaredesign Softwaredesign: Beispiel: Fabrik mit Prototypen Prof. Dr. Uwe Schmidt FH Wedel

Beispiel: Fabrik mit Prototypen

weiter

weiter

die Klasse: Figur

import java.awt.Color;
 
interface Figur {
    Figur klonen();
 
    void skalieren(int c);
    void skalieren(int cxint cy);
    void verschieben(int dxint dy);
 
    void setzeRandFarbe(Color f);
    void setzeFuellFarbe(Color f);
}
 
weiter

weiter

die Klasse: Kreis (analog zu Rechteck)

import java.awt.Color;
 
public
class Kreis implements Figur {
  int x = 0;
  int y = 0;
  int r = 1;
 
  int randBreite = 1;
 
  Color fuellFarbe = Color.white;
  Color randFarbe  = Color.black;
 
  // nicht public
  Kreis() {}
 
  public
  Figur klonen() {
    Kreis res = new Kreis();
 
    res.x = xres.y = yres.r = r;
 
    res.randBreite = randBreite;
 
    res.fuellFarbe = fuellFarbe;
    res.randFarbe  = randFarbe;
 
    return res;
  }
 
  public
  void skalieren(int c) {
    r *= c;
  }
 
  public
  void skalieren(int cxint cy) {
    if (cx != cy)
      throw
        new UnsupportedOperationException("...");
    skalieren(cx);
  }
 
  public
  void verschieben(int dxint dy) {
    x += dxy += dy;
  }
 
  public
  void setzeRandFarbe(Color f) {
    randFarbe = f;
  }
 
  public
  void setzeFuellFarbe(Color f) {
    fuellFarbe = f;
  }
}
weiter

weiter

die Klasse: FigurPrototypen, eine Figuren-Fabrik

public
class FigurPrototypen {
 
    protected
    Figur kreisPrototyp;
 
    public
    Figur newKreis() {
        // Erzeugung auf Anforderung
 
        if (kreisPrototyp == null) {
            kreisPrototyp = new Kreis();
 
            // lokale Anpassungen
            // kreisPrototyp.setzeRandFarbe(...)
        }
 
        return kreisPrototyp.klonen();
    }
 
 
    protected
    Figur rechteckPrototyp;
 
    public
    Figur newRechteck() {
        // Erzeugung auf Anforderung
 
        if (rechteckPrototyp == null) {
            rechteckPrototyp = new Rechteck();
 
            // s.o.
        }
 
        return rechteckPrototyp.klonen();
    }
}
weiter

Letzte Änderung: 13.04.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel