Dieser Artikel geht vom Konzept des Designmusters aus und beschreibt das Singleton-Muster im PHP-Designmuster. Es handelt sich um einige Grundkenntnisse, die Anfängern die Möglichkeit geben, sich zu verbessern.
Diese Artikelserie fasst die Anwendung von Designmustern in PHP zusammen. Dies ist der erste Artikel über das Singleton-Muster von Erstellungsmustern.
1. Einführung in Designmuster
Lassen Sie uns zunächst wissen, Was ein Designmuster ist:
Ein Designmuster ist eine Menge von Mustern, die wiederholt verwendet werden und einfach zu verwenden sind. Eine Zusammenfassung der Code-Design-Erfahrung, die für andere verständlich und zuverlässig ist.
Designmuster sind kein Patent von Java. Wir können 23 Designmuster auch gut in PHP mit objektorientierten Methoden verwenden.
Welche Beziehung besteht also zwischen der Architektur, dem Framework und den Designmustern, über die wir oft sprechen?
Architektur ist eine Reihe von Systemstrukturen und die Gesamtlösung für das Projekt; halbfertige Software, die wiederverwendet werden kann und spezifischer Programmcode ist. Architektur beinhaltet im Allgemeinen, welche Art von Framework verwendet werden soll, um die Lösung bestimmter Probleme zu beschleunigen und zu optimieren, und gute Framework-Codes nutzen viele Entwurfsmuster sinnvoll.
2. Verfeinerung mehrerer Prinzipien von Entwurfsmustern:
Öffnungs- und Schließprinzip: Module sollten für Erweiterungen offen und für Änderungen geschlossen sein.
Liskov-Substitutionsprinzip: Wenn die übergeordnete Klasse aufgerufen wird, kann sie ausgeführt werden, wenn sie durch eine Unterklasse ersetzt wird.
Prinzip der Abhängigkeitsumkehr: Die Abstraktion hängt nicht von Details ab, schnittstellenorientierte Programmierung und übergebene Parameter versuchen, auf Klassen auf hoher Ebene zu verweisen.
Prinzip der Schnittstellenisolation: Jede Schnittstelle ist nur für eine Rolle verantwortlich.
Prinzip der Wiederverwendung von Zusammensetzung/Aggregation: Verwenden Sie Zusammensetzung/Aggregation so weit wie möglich und missbrauchen Sie die Vererbung nicht.
3. Welche Funktionen haben Designmuster?
Entwurfsmuster können das Problem lösen
Ersetzen Sie unordentlichen Code und bilden Sie einen guten Codestil
Der Code ist leicht zu lesen und kann von Ingenieuren leicht verstanden werden
Beim Hinzufügen neuer Funktionen gibt es Die Schnittstelle muss nicht geändert werden und ist erweiterbar.
Gute Stabilität, im Allgemeinen treten keine unbekannten Probleme auf
Entwurfsmuster können nicht gelöst werden:
Entwurfsmuster sind Vorlagen, die zum Organisieren Ihres Codes verwendet werden, und keine Bibliotheken, die werden direkt aufgerufen;
Entwurfsmuster sind nicht die effizientesten, aber Lesbarkeit und Wartbarkeit des Codes sind wichtiger.
Verfolgen und wenden Sie Entwurfsmuster nicht blind an, sondern berücksichtigen Sie mehr beim Refactoring. Klassifizierung von Entwurfsmustern
Singleton-Muster, Fabrikmuster (einfache Fabrik, Fabrikmethode, abstrakte Fabrik), Erstellermuster, Prototypmuster.
2. Strukturmodus:
Adaptermodus
, Bridge-Modus, Dekorationsmodus, Kombinationsmodus, Erscheinungsmodus, Fliegengewichtsmodus, Proxy-Modus. 3. Verhaltensmuster: Vorlagenmethodenmuster, Befehlsmuster,
Iteratormuster
, Beobachtermuster, Mediatormuster, Memomuster, Interpretermodus , Zustandsmodus, Strategiemodus, Verantwortungskettenmodus, Besuchermodus. 5. Erstellungsentwurfsmuster 1. Singleton-Muster
Zweck: Sicherstellen, dass eine Klasse nur eine Instanz hat und einen globalen Zugriffspunkt für den Zugriff bereitstellen.
Anwendungsszenarien: Datenbankverbindung, Cache-Betrieb, verteilter Speicher.
/** * 单例模式 */ class DbConn { private static $_instance = null; protected static $_counter = 0; protected $_db; //私有化构造函数,不允许外部创建实例 private function construct() { self::$_counter += 1; } public function getInstance() { if (self::$_instance == null) { self::$_instance = new DbConn(); } return self::$_instance; } public function connect() { echo "connected: ".(self::$_counter)."n"; return $this->_db; } } /* * 不使用单例模式时,删除构造函数的private后再测试,第二次调用构造函数后,_counter变成2 */ // $conn = new DbConn(); // $conn->connect(); // $conn = new DbConn(); // $conn->connect(); //使用单例模式后不能直接new对象,必须调用getInstance获取 $conn = DbConn::getInstance(); $db = $conn->connect(); //第二次调用是同一个实例,_counter还是1 $conn = DbConn::getInstance(); $db = $conn->connect();
Das obige ist der detaillierte Inhalt vonWas ist ein PHP-Singleton-Muster? Detaillierte Erläuterung der Verwendung des Singleton-Modus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!