Es hat mal wieder gedauert, doch nun will ich den Blog mal mit Leben füllen. Ein neuer Kern braucht auch eine neue Hülle, also habe ich auch direkt ein neues Theme aufgesetzt. Ich hoffe man liest sich hier bald wieder!
Design Patterns: Facade
Nach Singleton, Memento und Prototype folgt auch schon der nächste Part der Design Patterns: Die Fassade. Sie ist das erste Entwurfsmuster aus dem Bereich der Structural Patterns (Strukturmuster) und dient als einheitliche und vereinfachte Schnittstellen zu einer beliebigen Menge von Schnittstellen eines Untersystems (Subsystems).
Die Fassade sollte also immer dann genutzt werden, wenn ein Untersystem viele Klassen enthält, die aber einzeln selten bzw. garnicht verwendet werden. Statt nun für eine gewisse Funktionalität sehr viele kleine Klassen ansprechen zu müssen, verwendet man eine Fassade, die diese Klassen vereint und Funktionalitäten weiter deligiert. Somit kann eine Fassade die Komplexität einer Implementierung erheblich senken, da das benutzte Untersystem nicht direkt sichtbar ist.

Um die Fassade korrekt zu implementieren benötigen wir als allererstes Subklassen. Diese Klassen enthalten jeweils Teil-Strukturen unserer Fassade, hier am Beispiel eines Kunden. Ein Kunde hat bei einer Bank ein Konto, ein Darlehen und eventuell eine Kreditkarte. Nun möchte er eine Hypothek abschließen. Dazu müssen wir prüfen, ob der Kunde kreditwürdig für eine solche Hypothek ist. Zuerst erstellen wir also unseren Kunden. Dazu dient folgende, sehr vereinfachte Klasse:
Design Patterns: Prototype
Der Prototype ist ein Entwurfsmuster aus der Kategorie der Erzeugungsmuster (Creational Patterns), ähnlich wie der bereits beschriebene Singleton. Dabei erzeugt der Prototype neue Instanzen eines Objektes bzw. einer Klasse auf Basis einer bereits definierten Vorlage, die für neue Instanzen schlichtweg geklont werden, statt alle Felder und Eigenschaften neu zu setzen.
In den meisten Fällen kommt immer dann ein Prototype zum Einsatz, wenn das Erzeugen neuer Instanzen von Klassen sehr kostspielig ist, die Instanzen sich aber grundsätzlich sehr ähnlich sind. Es gibt hier noch eine Reihe von anderen Gründen die ich gerne zitieren möchte:
“Ein Prototyp findet Anwendung, wenn die Erzeugung weiterer Instanzen einer Klasse teuer ist und sich die Objekte ähneln, die zu instanziierenden Klassen erst zur Laufzeit bekannt sind, eine Hierarchie von Fabriken parallel zu einer Hierarchie von Produkten vermieden werden soll oder wenn die Objekte einer Klasse nur wenige Zustandskombinationen annehmen können; oder wenn die Bearbeitung von Vorlagen sehr ähnlich oder gleich der von Objekten ist.” – Quelle: wikipedia.de

Um den Prototype in Aktion sehen zu können, benötigen wir zuerst ein passendes Beispiel, welches wir uns überlegen müssen. Im Internet bin ich häufig über einen Farbenmanager gestolpert, der entweder nicht korrekt implementiert oder schlecht kommentiert wurde, daher möchte in an einem solchen Beispiel einmal die Funktionsweise des Prototypes erklären.
LulzSec: Wurde mein Account gehackt?
Da die Hackergruppe LulzSec in den letzten 50 Tagen sehr aktiv war und sich somit in den Besitz von hunderttausenden Accounts bringen konnte stellt sich dem Ein oder Anderen die Frage: “Ist mein Account denn nun auch betroffen?”. Auch wenn man Passwörter immer in einem festdefinierten Zeitfenster ändern sollte, so möchte der vorsichtige User ja nicht gleich alle seine Accounts umstellen. Genau für diese Benutzer gibt es nun gleich zwei Tools mit denen sich feststellen lässt, ob sich ihr Account unter den Opfern der LulzSec Bewegung befindet.
Design Patterns: Memento
Nachdem ich hier bereits den Singleton beschrieben habe, folgt nun ein weiterer Design Pattern (Entwurfsmuster), diesmal allerdings aus dem Bereich der Behavioral Patterns (Verhaltensmustern). Der sogenannte Memento, oder auch als Token bezeichnet, soll den internen Zustand eines Objektes erfassen und diesen nach außen verlagern können, ohne dabei die Kapselung dieses Objektes zu beschädigen.
Der Memento sollte immer dann zum Einsatz kommen, wenn ein aktueller Zustand eines Objektes zwischengespeichert werden soll oder aber eine direkte Schnittstelle zur Ermittlung dieses Zustandes Details zur Implementierung aufzeigen würde. Letzteres kann ebenfalls mit dem Memento Pattern verhindert werden.

Prinzipiell ist der Memento nur eine Vereinigung von Serialize und Deserialize Methoden in C# mit der Möglichkeit das Objekt so zwischen zu speichern. Wir benötigen hierzu also zunächst einmal eine Klasse die wir serialisieren können.
Design Patterns: Singleton
Oftmals ist es nicht schwer, ein kleines Stück Software oder ein gutes Tool zu entwickeln. Doch was tun, wenn man ein wesentlich größeres und aufwendigeres Projekt realisieren möchte. Ich stand auch schon häufig vor diesem “Problem”, da ich häufig keinen passenden Anfang finde. Wenn das Grundkonzept steht möchte man viel zu oft schnell ans Programmieren. Generell auch eine feine Sache, die von Enthuisasmus zeugt. Aber Vorsicht! Klassen einfach drauf los zu programmieren ist eine Todsünde!
Es ist zwangsläufig notwendig, sich vorher mit seinen Klassen auseinander zu setzen, um nicht später alles über den Haufen werfen zu müssen, wenn man merkt, dass man etwas wichtiges vergessen hat. In diesem Prozess sind sogenannte Design Patterns von absoluter Notwendigkeit! Diese Entwicklungs Muster dienen dazu, grundsätzliche Strukturen und Verfahren in Euer Programm zu bringen. Ich möchte mich im ersten Teil dieser Serie mit dem Singleton, also der Einmal-Instanzierung einer Klasse, beschäftigen.
Read More…
So, nach langer langer Pause habe ich mir nun ein Herz gefasst und werde diesen Blog wiederbeleben. Mit dem Inhalt geht es wie gewohnt weiter, das heißt Rezensionen von Hard- und Software, Tipps & Tricks im Bereich der Software-Entwicklung und alles rund um das Thema Sicherheit im Netz.
Da mittlerweile doch schon einiges an Zeit in diesen Blog geflossen ist, wäre es sehr schade, wenn er einfach in der Flut des Netzes unterginge. Ich hoffe diesmal eine gewisse Kontinuität der Beitrage zu gewährleisten, damit es dem geneigten Leser auch nicht langweilig wird. An dieser Stelle bleibt mir dann wohl nur noch viel Spaß beim Lesen zu wünschen!
Pingchat! – SMS ohne Kosten
Es ist nicht wirklich eine Revolution und auch nichts grundlegend Neues. Dennoch benutze ich seit heute ein nettes kleines App namens Pingchat!. Dieses kann, wie bereits einige andere Apps auch, kostenlos “SMS” Nachrichten zwischen Usern versenden. Dazu muss der andere User natürlich auch das kostenlose App besitzen.
Exponentielle Glättungsverfahren
Wie ich schon damals sagte, möchte ich den Blog auch gerne für eigene Themen nutzen. Darunter fallen natürlich auch Gebiete, die mir während meiner Arbeitszeit begegnen und die ich recht interessant finde. An dieser Stelle möchte ich mich mit einem exponentiellen Glättungsverfahren auseinandersetzen, welches in der Lagerverwaltung eine größere Rolle spielt.
Fire in the hole… Admin down!
Vielleicht lässt es sich schon am Titel erahnen, aber ich finde leider momentan keine Zeit, um dieses schöne Blog-System zu pflegen. Leider hat sich bis dato auch noch kein Freiwilliger finden lassen, der uns tatkräftig unterstützen würde. Ich hoffe zwar, dass ich in den nächsten Wochen wieder regelmäßig Zeit finde dieses Blog mit Leben zu füllen, aber versprechen kann ich nichts.
