Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erläuterung des Liskov-Substitutionsprinzips (LSP), der fünf Hauptprinzipien des objektorientierten PHP

Detaillierte Erläuterung des Liskov-Substitutionsprinzips (LSP), der fünf Hauptprinzipien des objektorientierten PHP

Apr 08, 2018 am 09:43 AM
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);
}
Nach dem Login kopieren

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:

Detaillierte Erläuterung des Open-Closed-Prinzips (OCP) der fünf objektorientierten Prinzipien von PHP

Vererbungsstruktur der objektorientierten PHP-Funktion

Detaillierte Erläuterung des Schnittstellenisolationsprinzips (ISP) der fünf objektorientierten Prinzipien von PHP

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

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.

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

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

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

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

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

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.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

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

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

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

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

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 PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

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.

See all articles