Heim  >  Artikel  >  Backend-Entwicklung  >  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

不言
不言Original
2018-04-08 09:43:422009Durchsuche

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:

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!

Stellungnahme:
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