Architekturen von Softwaresystemen sollen einfach erweiterbar und weitestgehend standardisiert sein, damit die Entwickler sich leicht über Architekturen austauschen können. Für den objektorientierten Entwurf haben sich zahlreiche wertvolle Architektur- und Entwurfsmuster herausgebildet. Diese Muster basieren auf objektorientierÂÂten Prinzipien wie dem Prinzip der Dependency Inversion. Daher werden zuerst die wichtigÂsten objektorientierten Prinzipien erklärt. AnschlieÃend wird gezeigt, wie diese objektorientierten Prinzipien in den verschieÂdenen Architektur- und EntwurfsÂmustern umgesetzt werden. Alle vorgestellten MusÂter werden durch lauffähige BeiÂspiele in Java illustriert.