校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PHP設計模式之單例模式入門與應用詳解

PHP設計模式之單例模式入門與應用詳解

熱門標簽:電銷機器人沒有效果怎么樣 杭州語音電銷機器人 欣思維地圖標注 高德地圖標注店鋪收費嗎 江西電銷機器人收費 江門回撥外呼系統 高德地圖標注位置怎么標注 天潤融通外呼系統好嗎 泊頭在哪里辦理400電話

本文實例講述了PHP設計模式之單例模式入門與應用。分享給大家供大家參考,具體如下:

單例模式,是一種常用的軟件設計模式,在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個實例,即一個類只有一個對象實例。通俗來講就是通過提供自身共享實例的訪問,單例設計模式用于限制特定對象只能被創建一次,來看下這個單例模式的要點:

1.一個類只能有一個對象;

2.必須是自行創建這個類的對象;

3,要想整個系統提供這一個對象;

從具體實現的角度來說,可以按著下面這三點來理解:

一是單例模式的類只提供私有的構造函數,

二是類定義中含有一個該類的靜態私有對象,

三是該類提供了一個靜態的公有的函數用于創建或獲取它本身的靜態私有對象。

最主要的就是還要有一個private的clone方法,防止克隆,得記得哈。

優點如下:

一、實例控制

單例模式會阻止其他對象實例化其自己的單例對象的副本,從而確保所有對象都訪問唯一實例。

二、靈活性

因為類控制了實例化過程,所以類可以靈活更改實例化過程。

缺點如下:

一、開銷

雖然數量很少,但如果每次對象請求引用時都要檢查是否存在類的實例,將仍然需要一些開銷。可以通過使用靜態初始化解決此問題。

二、可能的開發混淆

使用單例對象(尤其在類庫中定義的對象)時,開發人員必須記住自己不能使用new關鍵字實例化對象。因為可能無法訪問庫源代碼,因此應用程序開發人員可能會意外發現自己無法直接實例化此類。

三、對象生存期

不能解決刪除單個對象的問題。在提供內存管理的語言中(例如基于.NET Framework的語言),只有單例類能夠導致實例被取消分配,因為它包含對該實例的私有引用。在某些語言中(如 C++),其他類可以刪除對象實例,但這樣會導致單例類中出現懸浮引用。

來看下咱寫的案例 :

class Test{
  static private $instance;
  private $age;
  private $name;
  private function __construct($name,$age)
  {
    $this->name = $name;
    $this->age = $age;
    echo "construct".PHP_EOL;
  }
  private function __clone()
  {
    // TODO: Implement __clone() method.
  }
  static public function set_name($name,$age)
  {
    if (!self::$instance instanceof self) {
       self::$instance = new self($name,$age);
     }
     return self::$instance;
  }
  public function get_name()
  {
    echo $this -> name.PHP_EOL;
    echo $this -> age.PHP_EOL;
  }
}
$object_1 = Test::set_name("cuijinpeng","26");
$object_1->get_name();
echo "br>";
$object_2 = Test::set_name("luyaran","27");
$object_2->get_name();

運行結果:

construct cuijinpeng 26
cuijinpeng 26

從上述實例中,我們可以看出,$object_1創建對象后,參數是"cuijinpeng","26",但是$object_2并沒有創建對象,而是直接使用$instance保存的唯一對象,所以輸出的參數并沒有變為"luyaran","27"。

好啦,本次記錄就到這里了。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP pthreads v3下worker和pool的使用方法示例
  • PHP-FPM 設置多pool及配置文件重寫操作示例
  • PHP設計模式之建造者模式(Builder)原理與用法案例詳解
  • PHP設計模式之適配器模式(Adapter)原理與用法詳解
  • PHP設計模式之策略模式(Strategy)入門與應用案例詳解
  • PHP設計模式之觀察者模式入門與應用案例詳解
  • php設計模式之單例模式用法經典示例分析
  • php設計模式之觀察者模式定義與用法經典示例
  • 淺談PHP設計模式之對象池模式Pool

標簽:銅川 寶雞 南陽 湛江 鎮江 黃南 婁底 宜賓

巨人網絡通訊聲明:本文標題《PHP設計模式之單例模式入門與應用詳解》,本文關鍵詞  PHP,設計模式,之單例,模式,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP設計模式之單例模式入門與應用詳解》相關的同類信息!
  • 本頁收集關于PHP設計模式之單例模式入門與應用詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 车险| 保定市| 托克托县| 沁水县| 和静县| 曲麻莱县| 长兴县| 望城县| 邮箱| 浦江县| 蒙自县| 高碑店市| 武川县| 万州区| 滦南县| 宣威市| 巴楚县| 邓州市| 万荣县| 大竹县| 罗平县| 寿光市| 根河市| 旺苍县| 伊宁县| 辰溪县| 桐梓县| 深泽县| 曲水县| 应城市| 孟州市| 建湖县| 湘乡市| 渝中区| 宁强县| 台东市| 改则县| 洪江市| 丰都县| 于田县| 陇川县|