Wir werden nach Bedarf hinzufügen und organisieren.
Es gibt Dinge wie das Konzept selbst und keine klare Erklärung.
** "Programmierstil, der häufig geänderte Teile in Klassen extrahiert und sich auf die Teile konzentriert, die sich nicht ändern" **
Kurz gesagt, ich verstehe, dass es eine Denkweise ist, so zu programmieren, dass es einfach ist, Spezifikationen zu ändern und Funktionen später zu erweitern.
** Das Wesen der Vererbung ist eine Schnittstelle, die abstrakte Konzepte zusammenbringt **
** Programmierung für eine Schnittstelle (Zusammenfassung) **
** Abfall beseitigen, verfeinern und etwas leicht verständlich machen **
--Layer unterscheidet sich von Vererbung und Polymorphismus
Vorerst werde ich nur Folgendes schützen.
--Camel Fall
** Es darf nicht mehr als einen Grund geben, eine Klasse zu ändern (Rolle = Verantwortung = Grund zur Änderung) **
** ・ Wenn es eine Spezifikationsänderung gibt, können Sie mit der Änderung umgehen, indem Sie Verhalten hinzufügen.
Was erwünscht ist, ist die folgende Substitutionseigenschaft:
Für jedes S-Objekt o1 gibt es ein T-Objekt o2 Es gibt ein Programm p, das mit o2 definiert ist Selbst wenn zu diesem Zeitpunkt o1 anstelle von ** o2 verwendet wird, ändert sich zu diesem Zeitpunkt das Verhalten von p nicht **
** • Erzwingen Sie nicht, dass der Client von Methoden abhängt, die der Client nicht verwendet **
-Wenn Sie von einer Methode abhängig sind, die Sie nicht verwenden, kann dies Auswirkungen auf Clients haben, die bei einer Änderung dieser Methode irrelevant sein sollten.
** - Gruppenbezogene Schnittstellen und Vorbereitung einer speziellen Schnittstelle für jeden Client ** Auf diese Weise kann der Client Abhängigkeiten von Methoden aufheben, die er nicht verwendet.
-Obermodule sollten nicht von unteren Modulen abhängen, ** Beide Module sollten von "abstract" abhängen **
· "Abstract" sollte nicht von Implementierungsdetails abhängen, ** Implementierungsdetails sollten von "Abstract" abhängen **
-Wenn das obere Modul der vom unteren Modul deklarierten Schnittstelle folgt, kann gesagt werden, dass der Besitz der Schnittstelle dem unteren Modul gehört.
** • Stellen Sie Beziehungen innerhalb des Programms mit einer abstrakten Klasse oder Schnittstelle her, unabhängig von der jeweiligen Klasse ** Keine Klasse abgeleitet von einer konkreten Klasse Überschreiben Sie nicht die in der Basisklasse implementierten Methoden
** ・ Es ist genauso wichtig, nicht vorzeitig "abstrakt" zu machen und "abstrakt" zu verwenden **
Es gab eine Erklärung. Ich möchte aussagekräftige und effektive Abstraktionen identifizieren.
Recommended Posts