|
1 | | -# README # |
| 1 | +# Design Pattern Katas für Java # |
2 | 2 |
|
3 | | -Privates Repo zur Entwicklung der Design Pattern Katas |
| 3 | +## Worum handelt es sich hier? ## |
| 4 | + |
| 5 | +### Design Patterns ### |
| 6 | + |
| 7 | +Bei [**Design Patterns**](https://de.wikipedia.org/wiki/Entwurfsmuster) (deutsch _Entwurfsmuster_) handelt es sich laut |
| 8 | +Wikipedia um bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme in der Softwareentwicklung. |
| 9 | + |
| 10 | +**Literaturempfehlungen**: |
| 11 | +* Einen guten und leicht verständlichen Einstieg in das Thema Design Patterns (sowie objektorientierte |
| 12 | +Design-Prinzipien allgemein) gibt das Buch _"Entwurfsmuster von Kopf bis Fuß"_ von Eric Freeman und Elisabeth Robson, |
| 13 | +erschienen im O'Reilly-Verlag. |
| 14 | +* Eine abstraktere Behandlung findet sich im Klassiker der "Gang of Four", |
| 15 | +durch den Design Patterns bekannt geworden sind: _"Entwurfsmuster: Elemente wiederverwendbarer objektorientierter |
| 16 | +Software"_ von Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (erschienen im Addison-Wesley-Verlag). |
| 17 | + |
| 18 | +### Code Katas ### |
| 19 | + |
| 20 | +Unter einem **Code Kata** versteht man eine kleine, abgeschlossene Übung, mit der Softwareentwickler ihre Fertigkeiten |
| 21 | +trainieren können. Der Begriff stammt aus der [asiatischen Kampfkunst](https://de.wikipedia.org/wiki/Form_(Kampfkunst)). |
| 22 | +Ausführliche Informationen zu Code Katas finden sich [hier](http://codekata.com/). |
| 23 | + |
| 24 | +### Katas für Design Patterns ### |
| 25 | + |
| 26 | +Ganz nach dem Motto _"learning by doing"_ finden sich hier Code Katas für verschiedene gängige Design Patterns. |
| 27 | +Damit kann die Implementierung der Design Patterns in Java ganz praktisch geübt werden. |
| 28 | + |
| 29 | +## Wie geht das? ## |
| 30 | + |
| 31 | +Ganz einfach: |
| 32 | +* Für jedes Design Pattern gibt es ein entsprechendes Package mit vorgefertigten Klassengerüsten, sowie einen JUnit-Test. |
| 33 | +* Die TODOs in den Gerüst-Klassen müssen durch Implementierung des jeweiligen Design Patterns so erledigt werden, |
| 34 | +dass alle JUnit-Tests erfolgreich durchlaufen. |
| 35 | + |
| 36 | +## Voraussetzungen ## |
| 37 | + |
| 38 | +Die Katas werden als Maven-Projekt zur Verfügung gestellt, das mit der "Maven-Projekt importieren"-Funktion |
| 39 | +(oder ähnlich lautend) in die jeweils bevorzugte IDE importiert werden kann. |
| 40 | + |
| 41 | +| Software | Version | |
| 42 | +|-------------|----------------------------| |
| 43 | +| Java | Version 8 (1.8) oder höher | |
| 44 | +| Maven |3.x | |
| 45 | + |
| 46 | +## Die Katas ## |
| 47 | + |
| 48 | +### Factory Method (Fabrikmethode) ### |
| 49 | + |
| 50 | +**Typ**: Erzeugungsmuster (_creational pattern_) |
| 51 | + |
| 52 | +Dieses Pattern wird verwendet, wenn eine Klasse den konkreten Typ der von ihr zu erzeugenden Objekte nicht kennen kann |
| 53 | +oder soll. Die Fabrikmethode liefert Objekte vom Typ eines Interfaces oder einer abstrakten Klasse zurück. Damit wird |
| 54 | +eine lose Kopplung zwischen dem aufrufenden und den erzeugten Objekten erzielt. |
| 55 | + |
| 56 | +### Factory Method Kata ### |
| 57 | + |
| 58 | +**Package:** `de.doubleslash.kata.designpattern.factory` \ |
| 59 | +**JUnit-Test:** `LoggerFactoryTest` |
| 60 | + |
| 61 | +In diesem Kata soll eine `LoggerFactory` implementiert werden, die je nach Konfiguration eine Unterschiedliche |
| 62 | +Logger-Klasse instanziert und zurückgeliefert werden. |
| 63 | + |
| 64 | +**UML** |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | +| Logger-Klasse | Funktion | Bemerkung | |
| 69 | +|---------------|-------------------------|-----------| |
| 70 | +| FileLogger | Loggt in eine Datei | | |
| 71 | +| DbLogger | Loggt in eine Datenbank | | |
| 72 | +| SilentLogger | Macht gar nichts | | |
0 commit comments