Der Kunde liest Quellcode
Bereitet Ihnen der Gedanke Unbehagen, mit Ihrem Kunden, der selbstverständlich von Programmierung keinen blassen Schimmer hat, Teile des Quellcodes zu besprechen? Warum sollten Sie überhaupt auf diese Idee kommen? Im Verlauf eines Projekts stoßen Sie unter Umständen auf Regeln und Geschäftsprozesse, die für Sie als Fachfremden schwer zu verstehen oder missverständlich sind. Solche Regeln werden üblicherweise in eigene Klassen und Module ausgelagert (das sollten sie zumindest). Wenn Sie Ihre Sache gut gemacht haben, sollte es auch für jemanden, der keine Programmiersprache spricht, möglich sein, die Logik der implementierten Regeln zu erkennen.
Vielleicht bietet ein Hotel seinen Gästen ab der vierten Nacht einen Preisnachlass an. Für normale Kunden beträgt dieser 20 Prozent, für Platinkunden sogar 30 Prozent. Schauen Sie sich einmal das folgende Listing an – auch ohne Kommentare wird deutlich, wie sich der Preis für ein Hotelzimmer errechnet.
class PriceCalculator {
public function calculatePrice(Room $room, $numberOfNights, Customer $customer) {
$basePrice = $room->getBasePrice();
if ($numberOfNights <= 3) {
$totalPrice = $basePrice * $numberOfNights;
} else {
if ($customer->hasPlatinumStatus()) {
$discountFactor = 0.30;
} else {
$discountFactor = 0.20;
}
$totalPrice = ($basePrice * 3) + (($numberOfNights – 3) * ($basePrice * $discountFactor));
}
}
return $totalPrice;
}
Listing 1
Technische Voraussetzungen
Wie bereits angesprochen, geht es beim Domain-Driven Design vornehmlich nicht um die technische Umsetzung, sondern vielmehr um Ihre Denkweise und den Aufbau Ihrer Anwendung. Sobald Sie sich mit dem Thema intensiver beschäftigen, werden Sie jedoch feststellen, dass Ihnen bestimmte Techniken helfen, ein domänengerechtes Design sauberer umzusetzen.
Ein wichtiger Aspekt dabei ist die saubere Trennung zwischen der Geschäftslogik (die Sie in Domain Models verwandeln) und der Infrastruktur und den Services (die in anderen Schichten ihr Zuhause finden). In der Praxis lässt sich diese saubere Trennung jedoch nicht immer durchsetzen. Wenn Sie eine Reservierung stornieren, möchten Sie sicherlich weitere Überprüfungen und Aktionen durchführen, die nicht in der Domäne der Hotelreservierung liegen: Hat der aktuell angemeldete Benutzer ausreichende Rechte? Muss ein Administrator per E-Mail benachrichtigt werden?







2 Antworten
von Die Zukunft der Extension-Entwicklung: N… 01.12.2009 (09:42Uhr) 1.
[...] in abstrahierte Softwareobjekte – das Domänen-Modell („Domain Model“) – übersetzt [1]. Objekte, die explizit nicht zum Domänen-Modell gehören sind solche, die für das Speichern und [...]
von Wie am besten Extbase lernen? - TYPO3-ne… 11.11.2011 (16:11Uhr) 2.
[...] werden, der Autor hat außerdem eine Zusammenfassung veröffentlich.Domain-driven DesignEin t3n-Artikel von Robert Lemke (Team Leader FLOW3) führt in das Thema ein.Das Buch Domain-Driven Design: Tackling Complexity in [...]