首頁 後端開發 php教程 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);
   }
 };
 ?>
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go語言中常見的程式設計範式和設計模式 Go語言中常見的程式設計範式和設計模式 Mar 04, 2024 pm 06:06 PM

Go語言作為一門現代化的、高效的程式語言,擁有豐富的程式設計範式和設計模式可以幫助開發者編寫高品質、可維護的程式碼。本文將介紹Go語言中常見的程式設計範式和設計模式,並提供具體的程式碼範例。 1.物件導向程式設計在Go語言中,可以使用結構體和方法實現物件導向程式設計。透過定義結構體和給結構體綁定方法,可以實現資料封裝和行為綁定在一起的物件導向特性。 packagemaini

Golang中單例模式的實作方式有哪些? Golang中單例模式的實作方式有哪些? Mar 05, 2024 pm 05:45 PM

Golang中單例模式的實作方式有三種:懶漢模式、餓漢模式和雙重檢查模式。接下來將為您詳細介紹這三種實作方式,並提供具體的程式碼範例。一、懶漢模式懶漢模式是指在第一次被呼叫時才建立單例實例,以下是一個懶漢模式的範例程式碼:packagesingletonimport("sync")typeSingletonstru

PHP中常用的設計模式及其實作方法 PHP中常用的設計模式及其實作方法 Jun 27, 2023 pm 01:08 PM

PHP是一種廣泛使用且非常流行的程式語言。在當今的Web應用程式中,PHP是非常重要的一部分。在開發PHP應用程式的過程中,設計模式起著至關重要的作用。設計模式是解決問題的一種模板,在不同的環境中可重複使用,幫助我們寫出更好的程式碼,使程式碼更加可靠、可維護、可擴展。在本文中,我們將探討一些PHP中常用的設計模式及其實作方法。單例模式單例模式是一種創建模式,它允許

php有哪些設計模式 php有哪些設計模式 Jul 25, 2023 am 09:39 AM

php設計模式有:1、單例模式,確保一個類別只有一個實例化物件;2、工廠模式,將物件的實例化過程封裝在一個工廠類別中;3、抽象工廠模式,是一種類似工廠模式的創建物件的模式;4、觀察者模式,實現物件之間的一對多依賴關係;5、適配器模式,將一個類別的介面轉換成另一個類別的介面;6、裝飾器模式,動態地給一個物件一些額外的功能;7、迭代器模式;8、策略模式;9、模板方法模式等等。

PHP核心的設計模式與實踐 PHP核心的設計模式與實踐 Nov 08, 2023 pm 08:58 PM

PHP核心的設計模式與實踐引言:設計模式是軟體開發中常用的解決問題的模板,它們提供了一種可重複使用的解決方案,可以幫助我們在開發過程中遵循最佳實踐和良好的軟體設計原則。 PHP作為一種廣泛應用的程式語言,也有許多常見且有用的設計模式可以在核心開發中使用。本文將介紹幾種常見的PHP設計模式,並提供相關的程式碼範例。一、單例模式(Singleton)單例模式是一種只允許

如何在Golang中保證單例的唯一性? 如何在Golang中保證單例的唯一性? Mar 06, 2024 am 08:03 AM

標題:在Golang中保證單例的唯一性在程式設計中,單例模式是一種常見的設計模式,用於確保一個類別只有一個實例,並提供全域存取點。在Golang中,我們可以透過使用sync套件中的Once類型和sync.Once來實現單例模式,以確保單例的唯一性。 1.sync.Once實作單例模式下面是使用sync.Once實作單例模式的範例程式碼:packagesingle

PHP7.0中的設計模式有哪些? PHP7.0中的設計模式有哪些? May 26, 2023 am 09:21 AM

隨著技術的不斷發展,設計模式在軟體開發中變得越來越重要。 PHP7.0作為最新的PHP版本,也整合了許多的設計模式。在本文中,我們將探討PHP7.0中的設計模式,以幫助PHP程式設計師更好地理解並應用這些模式。單例模式單例模式是一種建立型模式,它確保一個類別只有一個實例,並提供了一個全域存取點。在PHP7.0中,可以使用__construct方法和static方法來

PHP中的設計模式在框架中的應用方法詳解 PHP中的設計模式在框架中的應用方法詳解 Jun 09, 2023 am 11:55 AM

PHP是一種廣泛應用於Web開發領域的程式語言,而設計模式是一種被廣泛使用於軟體工程中的解決問題的方法。設計模式的應用能夠提高軟體的可擴展性、可維護性、可重用性等多個方面的效能,而且能夠更快地完成任務並減少程式碼重複。在PHP中,常使用設計模式來提高框架的效能,並且更好地組織和管理程式碼。因為框架需要處理大量的業務邏輯和複雜的業務流程,而設計模式則能夠幫助開發人員

See all articles