Heim Backend-Entwicklung PHP-Tutorial php设计模式之单例、多例设计模式的应用分析_php技巧

php设计模式之单例、多例设计模式的应用分析_php技巧

May 17, 2016 am 08:57 AM
php设计模式 单例

单例(Singleton)模式和不常见的多例(Multiton)模式控制着应用程序中类的数量。如模式名称,单例只能实例化一次,只有一个对象,多例模式可以多次实例化。

基于Singleton的特性,我们经常用Singleton配置应用程序并定义应用程序中可能随时访问的变量。但有时并不推荐使用Singleton,因为它生成了一个全局状态且

该单一根对象没有封装任何系统功能。多数情况下,会使单元测试和调试变得困难。读者根据情况自行决定。
代码示例:

复制代码 代码如下:

class SingletonExample{
    private function __construct(){}//防止直接实例化
  public static function getInstance(){ //不与任何对象有关联
 static $instance=null;    //调用此函数的所有代码共享该变量,不必要让其是类的静态变量
 if($instance==null){
   $instance=new SingletonExample();
     }
   return $instance;
  }
}
$obj1=SingletonExample::getInstance();
$obj2=SingletonExample::getInstance();
var_dump($obj1===$obj2);// true   是同一个实例
?>

Multiton与singleton相似,不同的是后者需要getInstance()函数传递关键值。
对于给定的关键值只会存在唯一的对象实例,如果有多个节点,每个节点拥有唯一的表识符,且各个节点在某单次执行(如cms里的节点)可能出现多次,那么就可以用Multiton模式实现这些节点啊,Multiton节省内存,并确保同一个对象的多个实例不发生冲突.
示例:
复制代码 代码如下:

  class MultitonExample{
 private function __construct(){}//防止直接实例化

   public static function getInstance($key){
  static $instance=array();   
  if(!array_key_exists($key,$instance)){
    $instance[$key]=new SingletonExample();
      }
    return $instance($key);
   }
 };
 ?>
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)

Gängige Programmierparadigmen und Entwurfsmuster in der Go-Sprache Gängige Programmierparadigmen und Entwurfsmuster in der Go-Sprache Mar 04, 2024 pm 06:06 PM

Als moderne und effiziente Programmiersprache verfügt die Go-Sprache über umfangreiche Programmierparadigmen und Entwurfsmuster, die Entwicklern beim Schreiben von qualitativ hochwertigem, wartbarem Code helfen können. In diesem Artikel werden gängige Programmierparadigmen und Entwurfsmuster in der Go-Sprache vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Objektorientierte Programmierung In der Go-Sprache können Sie Strukturen und Methoden verwenden, um objektorientierte Programmierung zu implementieren. Durch die Definition einer Struktur und das Binden von Methoden an die Struktur können die objektorientierten Funktionen der Datenkapselung und Verhaltensbindung erreicht werden. Paketmaini

Was sind die Implementierungsmethoden des Singleton-Musters in Golang? Was sind die Implementierungsmethoden des Singleton-Musters in Golang? Mar 05, 2024 pm 05:45 PM

Es gibt drei Möglichkeiten, den Singleton-Modus in Golang zu implementieren: Lazy-Modus, Hungrig-Modus und Double-Check-Modus. Als Nächstes stellen wir diese drei Implementierungsmethoden im Detail vor und stellen spezifische Codebeispiele bereit. 1. Lazy-Modus Der Lazy-Modus bedeutet, dass eine Singleton-Instanz nur erstellt wird, wenn sie zum ersten Mal aufgerufen wird. Das Folgende ist ein Beispielcode für den Lazy-Modus: packetsingletonimport("sync")typeSingletonstru

Häufig verwendete Entwurfsmuster in PHP und ihre Implementierungsmethoden Häufig verwendete Entwurfsmuster in PHP und ihre Implementierungsmethoden Jun 27, 2023 pm 01:08 PM

PHP ist eine weit verbreitete und sehr beliebte Programmiersprache. PHP ist ein sehr wichtiger Bestandteil heutiger Webanwendungen. Bei der Entwicklung von PHP-Anwendungen spielen Designmuster eine entscheidende Rolle. Entwurfsmuster sind eine Vorlage zur Lösung von Problemen, die in verschiedenen Umgebungen wiederverwendet werden kann. Sie helfen uns, besseren Code zu schreiben und den Code zuverlässiger, wartbarer und skalierbarer zu machen. In diesem Artikel werden wir einige häufig verwendete Entwurfsmuster in PHP und deren Implementierung untersuchen. Singleton-Muster Das Singleton-Muster ist ein Erstellungsmuster, das dies ermöglicht

Was sind die Designmuster in PHP? Was sind die Designmuster in PHP? Jul 25, 2023 am 09:39 AM

Zu den PHP-Entwurfsmustern gehören: 1. Singleton-Modus, der sicherstellt, dass eine Klasse nur ein instanziiertes Objekt hat. 2. Factory-Modus, der den Instanziierungsprozess des Objekts in einer Factory-Klasse kapselt. 3. Abstrakter Factory-Modus, der a ähnelt Fabrikmuster zum Erstellen von Objekten; 4. Beobachtermuster, das Eins-zu-Viele-Abhängigkeiten zwischen Objekten realisiert; 5. Adaptermuster, das die Schnittstelle einer Klasse in die Schnittstelle einer anderen Klasse umwandelt; 6. Dekoratormuster, das dynamisch einige zusätzliche Funktionen hinzufügt; ein Objekt; 7. Iteratormuster; 9. Vorlagenmethodenmuster usw.

PHP-Kernentwurfsmuster und -praktiken PHP-Kernentwurfsmuster und -praktiken Nov 08, 2023 pm 08:58 PM

Einführung in PHP-Kernentwurfsmuster und -praktiken: Entwurfsmuster sind häufig verwendete Problemlösungsvorlagen in der Softwareentwicklung. Sie bieten eine wiederverwendbare Lösung, die uns dabei helfen kann, während des Entwicklungsprozesses Best Practices und gute Softwaredesignprinzipien einzuhalten. Als weit verbreitete Programmiersprache verfügt PHP auch über viele gängige und nützliche Designmuster, die in der Kernentwicklung verwendet werden können. In diesem Artikel werden mehrere gängige PHP-Entwurfsmuster vorgestellt und relevante Codebeispiele bereitgestellt. 1. Singleton-Modus (Singleton) Der Singleton-Modus ist ein Typ, der nur zulässt

Was sind die Designmuster in PHP7.0? Was sind die Designmuster in PHP7.0? May 26, 2023 am 09:21 AM

Mit der kontinuierlichen Weiterentwicklung der Technologie werden Entwurfsmuster in der Softwareentwicklung immer wichtiger. Als neueste PHP-Version integriert PHP7.0 auch viele Designmuster. In diesem Artikel werden wir die Entwurfsmuster in PHP7.0 untersuchen, um PHP-Programmierern zu helfen, diese Muster besser zu verstehen und anzuwenden. Singleton-Muster Das Singleton-Muster ist ein Erstellungsmuster, das sicherstellt, dass eine Klasse nur eine Instanz hat und einen globalen Zugriffspunkt bereitstellt. In PHP7.0 können Sie dazu die __construct-Methode und die statische Methode verwenden

Detaillierte Erläuterung der Anwendung von Designmustern in PHP-Frameworks Detaillierte Erläuterung der Anwendung von Designmustern in PHP-Frameworks Jun 09, 2023 am 11:55 AM

PHP ist eine im Bereich der Webentwicklung weit verbreitete Programmiersprache, und Entwurfsmuster sind eine in der Softwareentwicklung weit verbreitete Problemlösungsmethode. Die Anwendung von Entwurfsmustern kann die Leistung von Software in vielen Aspekten wie Skalierbarkeit, Wartbarkeit und Wiederverwendbarkeit verbessern und Aufgaben schneller erledigen und Codeduplizierungen reduzieren. In PHP werden Entwurfsmuster häufig verwendet, um die Leistung des Frameworks zu verbessern und Code besser zu organisieren und zu verwalten. Da das Framework eine große Menge an Geschäftslogik und komplexe Geschäftsprozesse bewältigen muss, können Entwurfsmuster Entwicklern helfen

Wie kann die Einzigartigkeit von Singleton in Golang sichergestellt werden? Wie kann die Einzigartigkeit von Singleton in Golang sichergestellt werden? Mar 06, 2024 am 08:03 AM

Titel: Gewährleistung der Singleton-Einzigartigkeit in Golang In der Programmierung ist das Singleton-Muster ein gängiges Entwurfsmuster, das verwendet wird, um sicherzustellen, dass eine Klasse nur eine Instanz hat und einen globalen Zugriffspunkt bereitstellt. In Golang können wir das Singleton-Muster implementieren, indem wir den Once-Typ und sync.Once im Sync-Paket verwenden, um die Einzigartigkeit des Singletons sicherzustellen. 1.sync.Once implementiert den Singleton-Modus Das Folgende ist ein Beispielcode, der sync.Once zum Implementieren des Singleton-Modus verwendet: packetsingle

See all articles