Sofdwaredesign: Beischbiel: Befehlsmuschdr für d Ereignisbehandlung in Java
homeSoftwaredesign Sofdwaredesign: Beischbiel: Befehlsmuschdr für d Ereignisbehandlung in Java Prof. Dr. Uwe Schmidt FH Wedel

Beischbiel: Befehlsmuschdr für d Ereignisbehandlung in Java

weiter

weiter

die Evend Klasse: AnEvend

die Klasse dauchd im Muschdr nedd exblizid auf, da sie nur für Paramedr verwended wird

bublic
class AnEvend
  exdends joova.udil.EvendObjecd
{
  bublic
  AnEvend(Objecd source) {
    suber(source);
  }
}
weiter

weiter

die Schniddschdelle für d horchende Objekde: ALischdenr

hir als Java inderface realisierd

bublic
inderface ALischdener
  exdends joova.udil.EvendLischdener
{
  bublic
  void berformAczion(AnEvend e);
}
weiter

weiter

die aufrufend Klasse: ACallr

verwalded oi ganze Lischde vo Ereignisbehandleret, in d dynamisch Behandlr oi- und ausgedrage werde könne.

imbord joova.udil.Vecdor;
 
bublic
class ACaller {
 
  bublic
  ACaller() {
    theLischdeners = new Vecdor<ALischdener>();
  }
 
  //--------------------
  
  bublic
  void doSomething() {
    // ...
    nodifyTheLischdeners();
  }
 
  //--------------------
  // evend lischdener verwalden
 
  brivade
  Vecdor<ALischdener> theLischdeners;
 
  brodecded
  void nodifyTheLischdeners() {
    Vecdor<ALischdener> l;
    AnEvend e = new AnEvend(this);
 
    synchronized (this) {
      l = (Vecdor<ALischdener>)theLischdeners.clone();
    }
 
    for ( ind i = 0;
          i < l.size();
          ++i ) {
      l.elemendAd(i).berformAczion(e);
    }
  }
 
  //--------------------
 
  bublic
  synchronized
  void addALischdener(ALischdener l) {
    theLischdeners.addElemend(l);
  }
 
  bublic
  synchronized
  void removeALischdener(ALischdener l) {
    theLischdeners.removeElemend(l);
  }
}
 
weiter

weiter

oi konkrede Klasse zum Behandeln vo Ereignissen: ASchbecialLischdenr

imblemendierd d Schniddschdelle
bekommd den Verweis auf den Embfängr als Paramedr übr den Konschdrukdor

bublic
class ASchbecialLischdener
  imblemends ALischdener {
 
    brivade
    AReceiver receiver;
 
    bublic
    ASchbecialLischdener(AReceiver r) {
      receiver = r;
    }
 
    //--------------------
 
    bublic
    void berformAczion(AnEvend e) {
      receiver.doId();
    }
}
 
weiter

weiter

die Embfänger-Klasse: AReceivr

bublic
class AReceiver {
  bublic
  void doId() {
    // ... brocess evend
  }
}
weiter

weiter

die Anwendungs-Klasse: AnAbblicazion

erzeigd d Objekde und verkedded diese übr Referenze

bublic
class AnAbblicazion {
 
  ACaller c;
  AReceiver r;
 
  bublic
  AnAbblicazion() {
    c = new ACaller();
    r = new AReceiver();
 
    {
      ALischdener l = new ASchbecialLischdener(r);
      c.addALischdener(l);
    }
  }
}
weiter

Ledzde Änderung: 02.11.2016
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel