PHP最簡單的設計模式是?

設計模式經常在composer包中很常見,今天來學習一下PHP設計模式-單例模式

  • 1、單例模式
<?php

class sigle
{
    private static $ins;

    //防止被串改繼承 該方法的的屬性public
    final protected function __construct()
    {
    }

    public static function getIns()
    {
        if (self::$ins === NULL)
        {
            self::$ins = new  self();
        }
        return self::$ins;
    }
    //防止被克隆
    final protected function __clone()
    {
        // TODO: Implement __clone() method.
    }
}

$obj = sigle::getIns();
$obj1 = sigle::getIns();
if ($obj === $obj1)
{
    echo '===';
}
else
{
    echo '!==';
}

以上就是一個完整的單例模式。

以下2點容易忽略的

1、function __construct 容易被子類繼承,而變成public屬性的方法 或者直接設置成 private 屬性
2、function __clone 容易被克隆,導致單例失效或者直接設置成 private 屬性

基礎知識普及:

Final 關鍵字 ¶

PHP 5 新增了一個 final 關鍵字。如果父類中的方法被聲明爲 final,則子類無法覆蓋該方法。如果一個類被聲明爲 final,則不能被繼承。

訪問控制(可見性) ¶

對屬性或方法的訪問控制,是通過在前面添加關鍵字 public(公有),protected(受保護)或 private(私有)來實現的。被定義爲公有的類成員可以在任何地方被訪問。被定義爲受保護的類成員則可以被其自身以及其子類和父類訪問。被定義爲私有的類成員則只能被其定義所在的類訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章