


Detaillierte Erläuterung des Liskov-Substitutionsprinzips (LSP), der fünf Hauptprinzipien des objektorientierten PHP
Dieser Artikel stellt hauptsächlich das Liskov-Substitutionsprinzip (LSP) der fünf objektorientierten Prinzipien von PHP vor. Er analysiert das Konzept und Prinzip des Liskov-Substitutionsprinzips (LSP) ausführlicher und analysiert das Liskov-Substitutionsprinzip von PHP Für die einfache Verwendung von (LSP) können sich Freunde, die es benötigen, auf
beziehen. Dieser Artikel erklärt das Liskov-Substitutionsprinzip (LSP), die fünf Hauptprinzipien von objektorientiertem PHP, anhand von Beispielen . Teilen Sie es allen als Referenz mit. Die Einzelheiten lauten wie folgt:
Das Ersetzungsprinzip wurde von Frau Liskov vom MIT Computer Science Laboratory in einem Artikel auf der OOPSLA-Konferenz im Jahr 1987 vorgeschlagen. Es geht hauptsächlich auf einige davon ein Prinzipien zur Vererbung, daher wird es Richter-Substitutionsprinzip genannt.
Im Jahr 2002 veröffentlichte Robert C.Martin ein Buch mit dem Titel „Agile Software Development Principles Patterns and Practices“, in dem er das Liskov-Substitutionsprinzip schließlich in einem Satz vereinfachte: „Subtypen müssen für ihre Basistypen ersetzbar sein.“ (Unterklassen müssen durch ihre Basistypen ersetzt werden können.)
1. Inhalt von LSP
Definition und Hauptidee des Liskov-Substitutionsprinzips sind wie folgt : Da die Vererbung in der objektorientierten Programmiertechnologie in der spezifischen Programmierung zu einfach ist, denken wir beim Entwurf und der Programmierimplementierung vieler Systeme nicht ernsthaft und rational darüber nach, ob die Vererbungsbeziehung zwischen ihnen angemessen ist. ob die abgeleitete Klasse einige Methoden in ihrer Basisklasse korrekt überschreiben kann usw. Daher kommt es häufig zu einem Missbrauch der Vererbung oder einer falschen Vererbung, was große Probleme bei der späteren Wartung des Systems mit sich bringt. Dies erfordert, dass wir ein Designprinzip befolgen, nämlich das Ersetzungsprinzip.
LSP weist darauf hin, dass Unterklassentypen ihre übergeordneten Typen ersetzen und überall dort erscheinen müssen, wo die übergeordnete Klasse erscheinen kann. Es zeigt uns, wie wir Code korrekt erben und ableiten und sinnvoll wiederverwenden. Dieses Prinzip besagt, dass, wenn eine Softwareentität eine Basisklasse verwendet, diese auf ihre Unterklassen angewendet werden muss, und dass der Unterschied zwischen Basisklassenobjekten und Unterklassenobjekten überhaupt nicht erkannt werden kann. Denken Sie darüber nach, ähnelt es dem Konzept des Polymorphismus?
2. LSP basiert hauptsächlich auf dem Designprinzip der Vererbung
Da Vererbung und Ableitung ein Hauptmerkmal von OOP sind, können sie die wiederholte Programmierimplementierung von Code reduzieren. Dadurch wird die Systemcode-Wiederverwendung in der Anwendung realisiert, aber wie kann man die Vererbung richtig gestalten und den Vererbungsmechanismus rational anwenden?
Das ist das Problem, das LSP lösen möchte:
Wie gestaltet man die Vererbung richtig?
Wie erhält man die beste Vererbungshierarchie?
Wie kann verhindert werden, dass die entworfene Klassenhierarchie in eine Situation gerät, die nicht den OCP-Prinzipien entspricht?
Wie lässt sich dieses Gestaltungsprinzip einhalten?
1) Alle Methoden der übergeordneten Klasse müssen in der Unterklasse implementiert oder neu geschrieben werden, und die abgeleitete Klasse implementiert nur die in ihrer abstrakten Klasse deklarierten Methoden und sollte keine redundanten Methodendefinitionen oder -implementierungen liefern
2) In Client-Programmen sollten anstelle von Unterklassenobjekten direkt nur übergeordnete Klassenobjekte verwendet werden, damit eine Laufzeitbindung (dynamischer Polymorphismus) erreicht werden kann.
Wenn die Klassen A und B gegen das Design von LSP verstoßen, besteht der übliche Ansatz darin, eine neue abstrakte Klasse C als Oberklasse der beiden konkreten Klassen zu erstellen und dadurch die gemeinsamen Verhaltensweisen von A und B nach C zu verschieben Lösung des Problems, dass die Verhaltensweisen von A und B nicht vollständig konsistent sind.
Die Unterstützung von PHP für LSP ist jedoch nicht gut, es mangelt an Konzepten wie der Aufwärtstransformation und kann nur durch einige umständliche Methoden erreicht werden. Auf dieses Prinzip wird hier nicht näher eingegangen.
Das Folgende ist eine Cache-Implementierungsschnittstelle, die abstrakte Klassen als Basisklassen verwendet und LSP folgt, um ihr Design zu implementieren.
<?php abstract class Cache { /** * 设置一个缓存变量 * @param $key 缓存key * @param $value 缓存内容 * @param int $expire 缓存时间(秒) * @return boolean 是否缓存成功 */ public abstract function set($key, $value, $expire = 60); /** * 获取一个已经缓存的 * @param $key 缓存key * @return mixed 缓存内容 */ public abstract function get($key); /** * 删除一个已经缓存的变量 * @param $key 缓存key * @return boolean 是否删除成功 */ public abstract function del($key); /** * 删除全部缓存变量 * @return boolean 是否删除成功 */ public abstract function delAll(); /** * 检测是否存在对应的缓存 * @param $key 缓存key * @return boolean 是否存在 */ public abstract function has($key); }
Wenn Sie nun das Caching unter verschiedenen Mechanismen wie Dateien, Memcache, Beschleuniger usw. implementieren müssen, müssen Sie nur diese abstrakte Klasse erben und implementieren Sie seine abstrakten Methoden.
Die Codes in LSP sind nicht nur Funktionen, sondern auch Bedeutungen in Gebärdensprache. Denken Sie darüber nach: Ein weißes Pferd kann ein Pferd ersetzen, und ein Ochse wird auch als Arbeitskraft eingesetzt. Kann er ein Pferd ersetzen? Ist es für Männer akzeptabel, High Heels zu tragen?
Verwandte Empfehlungen:
Vererbungsstruktur der objektorientierten PHP-Funktion
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Liskov-Substitutionsprinzips (LSP), der fünf Hauptprinzipien des objektorientierten PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
