Skip to content

Commit 7ea2310

Browse files
author
swaldmann
committed
Documentation.
1 parent 8529719 commit 7ea2310

3 files changed

Lines changed: 102 additions & 2 deletions

File tree

README.md

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,72 @@
1-
# README #
1+
# Design Pattern Katas für Java #
22

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+
![alt](doc/images/factory_method.png)
67+
68+
| Logger-Klasse | Funktion | Bemerkung |
69+
|---------------|-------------------------|-----------|
70+
| FileLogger | Loggt in eine Datei | |
71+
| DbLogger | Loggt in eine Datenbank | |
72+
| SilentLogger | Macht gar nichts | |

doc/images/factory_method.png

15.2 KB
Loading

doc/plantuml/factory_method.puml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
@startuml
2+
3+
interface Logger {
4+
{abstract} void log(String mesage)
5+
}
6+
7+
class FileLogger {
8+
void log(String mesage)
9+
}
10+
11+
class DbLogger {
12+
void log(String mesage)
13+
}
14+
15+
class SilentLogger {
16+
void log(String mesage)
17+
}
18+
19+
class LoggerFactory {
20+
Logger getLogger()
21+
}
22+
23+
Logger <|-- FileLogger
24+
Logger <|-- DbLogger
25+
Logger <|-- SilentLogger
26+
27+
LoggerFactory .up.> SilentLogger: <<creates>>
28+
LoggerFactory .up.> DbLogger: <<creates>>
29+
LoggerFactory .up.> FileLogger: <<creates>>
30+
31+
@enduml

0 commit comments

Comments
 (0)