Funktionen, die Zeiger oder Referenzen auf Basisklassen verwenden, sollten Objekte abgeleiteter Klassen verwenden können, ohne es wissen zu müssen.
Interface Segregation Principle (Prinzip der Schnittstellentrennung)
Clients sollten nicht gezwungen sein, sich auf Schnittstellen zu verlassen, die sie nicht verwenden. Dies bedeutet, die Anzahl der Schnittstellen Member sollte möglichst minimiert werden.
Dependency Inversion Principle (Prinzip der Abhängigkeitsinversion)
Ganz einfach gesagt sollten High Level Module nicht von Low Level Modulen abhängen, beide sollten von Abstraktionen abhängen und Abstraktionen sollten nicht von Details abhängen, sondern Details sollten von Abstraktionen abhängen.
Damit kann Code nur lose gekoppelt werden. Ein oft verwendendes Pattern hier ist das Dependency Injection pattern, welches in vielen modernen Umgebungen unterstützt wird.
Aber auch andere Pattern helfen uns, einfach zu verstehenden und wartbaren Code zu schreiben. Hier noch ein paar Beispiele:
DRY (Don't repeat yourself) (Wiederholen Sie sich nicht)
Jedes kleine Stückchen Code sollte nur einmal vorkommen.
KISS (Keep it simple, Stupid!) (Halte ein einfach)
Unnötige Komplexitäten sollten vermieden werden.
Design Pattern in der GUI Entwicklung
Wie bei der allgemeinen Softwareentwicklung setzen wir auch bei der GUI Entwicklung auf bewährte Verfahren und Muster. Hier haben sich, je nach Framework und Library, verschiedene Pattern bewährt:
MVVM
Dieses Pattern hat sich vor allem im Bereich der WPF / Xamarin Entwicklung bewährt und wird, in Verbindung mit Data Binding, auch von uns sehr gern eingesetzt.
MVC
Das MVC-Entwurfsmuster (Model-View-Controller) ist ein Entwurfsmuster, das es bereits seit einigen Jahrzehnten gibt. Es wurde für viele verschiedene Technologien verwendet, von Smalltalk über C ++ bis Java und jetzt natürlich auch in C # und .NET.
MVP
Das Model View Presenter Muster ist aus dem MVC Pattern hervorgegangen. Es soll für eine striktere Trennung von View und Model sorgen. Dies führt zu einer besseren Testbarkeit.