Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung des PHP-Liskov-Substitutionsfalls

Detaillierte Erläuterung des PHP-Liskov-Substitutionsfalls

php中世界最好的语言
php中世界最好的语言Original
2018-05-17 10:38:081507Durchsuche

Dieses Mal werde ich Ihnen den Fall des PHP-Richter-Ersatzes ausführlich erläutern. Was sind die Vorsichtsmaßnahmen für den PHP-Richter-Ersatz?

Liskov-Substitutionsprinzip

Das Liskov-Substitutionsprinzip sagt uns, dass in Software ein Basisklassenobjekt durch ersetzt werden muss. Für seine Unterklassenobjekte das Programm generiert keine Fehler und Ausnahmen. Das Gegenteil ist nicht der Fall. Wenn eine Software-Entität ein Unterklassenobjekt verwendet, kann sie möglicherweise nicht unbedingt das Basisklassenobjekt verwenden. Das Liskov-Substitutionsprinzip ist eine der wichtigen Methoden zur Implementierung des Öffnungs- und Schließprinzips. Da Unterklassenobjekte überall dort verwendet werden können, wo Basisklassenobjekte verwendet werden, versuchen Sie, den Basisklassentyp zu verwenden, um das Objekt im Programm zu definieren und zur Laufzeit zu bestimmen . Sein Unterklassentyp ersetzt das übergeordnete Klassenobjekt durch das Unterklassenobjekt.

Bei Verwendung des Liskov-Substitutionsprinzips müssen Sie beachten, dass alle Methoden der Unterklasse in der übergeordneten Klasse deklariert werden müssen oder die Unterklasse alle in der übergeordneten Klasse deklarierten Methoden implementieren muss. Versuchen Sie, die übergeordnete Klasse als abstrakte Klasse oder Schnittstelle zu entwerfen, lassen Sie die Unterklasse die übergeordnete Klasse erben oder die übergeordnete Schnittstelle implementieren und implementieren Sie die in der übergeordneten Klasse deklarierten Methoden. Zur Laufzeit ersetzt die Unterklasseninstanz die übergeordnete Klasseninstanz und wir Die Systemfunktion kann problemlos erweitert werden, und der Code der ursprünglichen Unterklasse muss nicht geändert werden. Das Hinzufügen neuer Funktionen kann durch Hinzufügen einer neuen Unterklasse erreicht werden.

Durch einen Code verstehen

<?php
//例子1
class Bird{
  protect function fly(){
  }
}
//翠鸟
class KingFisher extends Bird{
}
//鸵鸟
class Ostrich extends Bird{
  //鸵鸟不会飞啊
}
//例子2
class A{
  protect function add($a, $b){
    return $a + $b;
  }
} 
//重载
class B extends A{
  protected function add($a, $b){
    return $a + $b + 100;
  }
}
?>

Das Liskov-Substitutionsprinzip ist eine Einschränkung der Klassenvererbung. Es gibt zwei Verständnisse des Liskov-Substitutionsprinzips:

1. Sie können nicht einfach ungeeignete Klassen mit redundanten Methoden oder Attributen erben. (Beispiel 1)

2. Unterklassen können die Funktionen der übergeordneten Klasse erweitern, jedoch nicht die ursprünglichen Funktionen der übergeordneten Klasse ändern. (Beispiel 2)

Das Liskov-Substitutionsprinzip enthält die folgenden versteckten Bedeutungen:

① Eine Unterklasse kann die abstrakte Methode der übergeordneten Klasse implementieren, aber die übergeordnete Klasse nicht überschreiben Nicht abstrakte Methoden der Klasse.

② Unterklassen können ihre eigenen einzigartigen Methoden hinzufügen.

③ Wenn die -Methode einer Unterklasse die -Methode der übergeordneten Klasse überschreibt, sind die Vorbedingungen der Methode (d. h. die formalen Parameter der Methode) lockerer als die Eingabeparameter der übergeordneten Klasse Klassenmethode.

④ Wenn eine Methode einer Unterklasse eine abstrakte Methode einer übergeordneten Klasse implementiert, sind die Nachbedingungen der Methode (d. h. der Rückgabewert der Methode) strenger als die der übergeordneten Klasse.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

PHP-Caching-Tool XCache-Installation und Anwendungsfallanalyse

Wie verhindert PHP gleichzeitiges wiederholtes Schreiben

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des PHP-Liskov-Substitutionsfalls. 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