Inhaltsverzeichnis
1 Einführung
1.1 Was ist guter Design
1.2 Was ist Refactoring
2 Refactoring
2.1 Klassen
2.1.1 Ein oder zwei Klassen
2.1.2 Vorteile kleiner Klassen
2.1.3 Extract Subclass
2.1.4 Rollen Status Pattern
2.2 Methoden
2.2.1 Extract Method
2.2.1.1 Einführung
2.2.1.2 Idealer Design von Methoden
2.2.1.3 Vorteile kurzer Methoden
2.2.1.4 Typisierung von Methoden
2.2.1.5 Method Object
2.3 Vererbung Delegation
2.3.1 Verschiebung Methoden, Attribute
2.3.2 Template Methode
2.3.3 Vererbung und Delegation
2.4 Vereinfache Bedingungen
2.4.1 Ersetzte verschachtelte Bedingungen durch Guard Clauses
2.4.2 Ersetzte Bedingungen durch Polymorhpismus
2.4.3 Führe Null Objekt ein
2.5 Schnittstellen
2.5.1 Bedeutung von Schnittstellen
2.5.2 Folgerungen
2.5.3 Qualitätskriterien von Schnittstellen
2.5.4 Adapter Pattern
2.5.5 Lange Parameterlisten
2.6 Behälter, Law of Demeter
2.6.1 Behälter
2.6.2 Law of Demeter
3 Systemarchitektur
3.1 Einführung
3.1.1 Womit beschäftigt sich ein Systemarchitekt?
3.1.2 Was zeichnet eine gute Systemarchitektur aus?
3.2 Pakete
3.2.1 Horizontale und Vertikale Paket Bildung
3.2.2 Kriterien die Pakete erfüllen sollen
3.2.3 Prinzipien des Paket Designs
3.3 Schichtenmodell
3.4 Objektorientierte Designprinzipien
3.4.1 Das Single Responsibility Prinzip SRP
3.4.2 Das Open Closed Prinzip OCP
3.4.3 The Liskov Substitution Prinzip LSP
3.4.4 The Dependency Inversion Principle DIP
3.4.5 The Interface Segregation Principle ISP
3.5 Entkopplung
3.5.1 Fassade Pattern
3.5.2 Inverted Association Pattern
4 Benutzungsoberläche
4.1 Trennung Interaktion und Funktionalitätskomponente
4.2 Bildung komplexer Fenster aus einfachen
4.3 Kapseln der Benutzeraktionen durch Command Pattern
4.4 Das Beobachter Pattern
5 Literatur