24.11.2013 Aufrufe

5 Objektorientiertes Design

5 Objektorientiertes Design

5 Objektorientiertes Design

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

88 3 <strong>Objektorientiertes</strong> <strong>Design</strong><br />

public void changeImageData(final int width, final int height,<br />

final byte[] imageData)<br />

{<br />

this.width = width;<br />

this.height = height;<br />

this.imageData = imageData;<br />

}<br />

public String getName()<br />

{<br />

return this.name;<br />

}<br />

}<br />

// weitere get()-Methoden ...<br />

Die genannten Änderungen machen die Klasse besser lesbar. Wichtiger ist aber, dass<br />

die Abhängigkeiten der Attribute untereinander nun deutlich zu erkennen sind und<br />

nur durch eine Methode in der öffentlichen Schnittstelle beschrieben werden. Diese<br />

Business-Methode ist auch die richtige Stelle, um Änderungen an mögliche Beobachter<br />

zu kommunizieren.<br />

Betrachten wir, wie sich das neue API der Klasse SimpleImage im Einsatz auswirkt.<br />

Statt der direkten set()-Aufrufe erfolgt zunächst eine Zwischenspeicherung<br />

in lokalen Variablen. Erst nachdem alle Daten erfolgreich eingelesen werden konnten,<br />

wird eine Objektkonstruktion ausgeführt. Die Anmeldung des Beobachters ist nun<br />

problemlos – es werden nur gültige Zwischenzustände nach außen sichtbar. Selbst die<br />

fehlende Behandlung eines Parsing-Fehlers hat bei dieser Art der Realisierung deutlich<br />

weniger negative Auswirkungen. Es wird dann einfach kein Objekt erzeugt. Folgendes<br />

Listing zeigt das neue API im Einsatz:<br />

public SimpleImage createSimpleImageFromFile() throws IOException<br />

{<br />

final String imageName = readNameFromFile();<br />

try<br />

{<br />

final int imageWidth = readWidthFromFile();<br />

final int imageHeight = readHeightFromFile();<br />

final String imageData = readImageDataFromFile();<br />

final SimpleImage simpleImage = new SimpleImage(imageName, imageWidth,<br />

imageHeight, imageData.getBytes());<br />

registerObserver(simpleImage);<br />

return simpleImage;<br />

}<br />

catch(final NumberFormatException ex)<br />

{<br />

log.error("failed to create SimpleImage object from file", ex);<br />

}<br />

}<br />

return null;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!