von Robert Lemke, 28.02.2008

Lösungsansätze für die Entwicklung komplexer Webanwendungen: Domain-Driven Design

Aus dem
t3n Magazin Nr. 11

Jetzt kaufen

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.

Ein Preisrechner

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 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?

Seite:  1 2 3 4 5 6 7 8

2 Antworten

  1. 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 [...]

  2. 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 [...]

Deine Meinung


(wird nicht veröffentlicht)