Seit Monaten schiebe ich die Bücher zum Thema Design Pattern vor mir her, es gibt immer ein anderes, interessantes Buch. Besonders seit ich für Actionscripthero die Apress und FriendsOfEd Referenz Bücherei verwalte.
Eine kleine stichwortartige Zusammenfassung zum Thema:

Was ich schon immer über Design Prinzipien wissen und nicht vergessen sollte:

Encapsulation: Die Einkapselung = Bleib privat und benutze getter und setter.

Polymorphismus: Vielgestaltigkeit = Bleib Flexibel bei Objekten, oder die Fähigkeit von Objektvariablen Objekte unterschiedlicher Klassen aufzunehmen.

Und wo ich schon dabei bin die 2 Regeln des guten Softwaredesign:

  • Programmiere zu einer Schnittstelle, nicht einer Implementierung.
  • Benutze Objekt Kompositionen vor Klassenvererbung.
  • Und schon sind wir bei der Umsetzung dieser Regeln mit Hilfe von Interfaces und/oder abstrakten Klassen:

    Interfaces:

  • Sie geben Methoden vor, die in den implementierenden Klassen übernommen werden müssen.
  • Bei der der Anwendung einer Interface implementierenden Klassen zum Supetyp typen.
  • Alles klar? Wir programmieren zu einer Schnittstelle:

  • 1. Ein Interface – IKlasse – erzeugen und Methoden einfügen.
  • 2.Jeweils neue Klasse erzeugen, die Interface implementiert – JeweilsKlasse implements IKlasse.
  • 3.Jeweils Methoden der IKlasse aufrufen und eventuell befüllen.
  • 4.BenutzerKlasse mit abgeleiteter JeweilsKlasse instanziiert JeweilsKlasse mit dem Objekttyp der IKlasse:

    Das sieht dann so aus:
    BenutzerKlasse extends JeweilsKlasse
    private var objVar: IKlasse = new JeweilsKlasse();

  • 5. Jetzt können die JeweilsKlasse Methoden der IKlasse aufgerufen werden.
  • Abstrakte Klassen: (gibts zwar nicht in AS, so wie in Java, aber wir machen einfach welche und tun so):

  • Können nicht instantiiert werden, da sie Methoden enthalten, die nicht implementiert wurden.
  • Abstrakte Klassen werden abgeleitet:

    public class JeweilsKlasse extends AbstractKlasse

  • Abstrakte Methoden können nicht aufgerufen werden, sie definieren nur eine Schnittstelle. Erst durch Überlagerung in einer abgeleiteten Klasse und Implementierung des fehlenden Methodenaufrufes wird eine abstrakte Klasse konkret und kann aufgerufen werden.
  • Eine oder mehrere Methoden können mit override implementiert werden.
  • Die Ausführung erfolgt wie beim Interface mit der Programmierung zur Schnittstelle.
  • Composition:

  • CompoKlasse beinhaltet eine Referenz zu einer AndereKlasse in der Klassendefinition und erzeugt eine Instanz dieser AnderenKlasse.
  • Delegate:

  • In CompoKlasse verweist eine public function zurück auf die AndereKlasse.
  • Die Ausführende, benutzende Klasse greift auf AndereKlasse über die CompoKlasse und deren Methode zu.
  • Granularity:

  • Grobkörnig arbeiten, in kleine Funktionalitäten aufbrechen.
  • Warum diese Kurzform zur Erklärung? Es gibt bereits genug Bücher und Artikel oder Beispiele zum Thema. Ich möchte hier aber etwas haben, auf das ich schnell zugreifen kann, und das mir eine schnelle “Erinnerung” oder “Übersicht” über die Thematik gibt. Gerade für nicht Informatiker, programmierende Designer, also Menschen, die sich in die Materie selbst einarbeiten ist dies als Gedächnisstütze gedacht. Solange, bis man/wir es im Blut haben und die Ideen direkt und ohne Umwege Design Pattern anwenden.

    Ein Kommentar zu “Vor Design Pattern und nach OOP”

    1. Hallo, super Beitrag, der RSS Link funktioniert leider net, aber trotzdem super Homepage!

    Leave a Reply

    XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

     
    Get Adobe Flash player