首頁  >  文章  >  後端開發  >  PHP中單例模式與工廠模式

PHP中單例模式與工廠模式

高洛峰
高洛峰原創
2017-02-18 16:22:251244瀏覽

單例模式概念

單例模式是指整個應用中類別只有一個物件實例的設計模式。

單例模式的特點


  一個類別在整個應用中只有一個實例

  類必須自行創建這個實例

 例㟀

我用php大部分操作都是和各種資料庫打交道,包括mysql,redis,memcache等各種關係型和非關係型資料庫,所以一個應用中會存在大量連接資料庫的操作,如果不用單例模式,那每次都要new操作,但是每次new都會消耗大量的記憶體資源和系統資源,而且每次開啟和關閉資料庫連線都是對資料庫的極大考驗和浪費。

  需要一個保存類別的唯一實例的靜態成員變數(通常$instance為私有變數)

  建構函式和複製函式必須宣告為私有的,為了防止外部程式new類別而失去單例模式意義

  必須提供一個存取這個實例的公共靜態方法,從而傳回唯一實例的一個引用

//设计模式
//单例模式  都是使用同一个对象
//class Ren
//{
//    public $name;
//    private static $dx;   //存储对象
//
//    private function __construct()
//    {
//
//    }
//
//    public static function DuiXiang()
//    {
//        if(empty(self::$dx))
//        {
//            self:;$dx=new Ren();
//        }
//        return self::$dx;
//    }
//}
//
//$r= Ren::DuiXiang();

//把构造函数变为私有
//做了一个方法来间接造对象
//在该方法里面加限制
 

 

工廠類

  是指包含一個專門用其他專門用來創建其他物件的方法的類別,工廠類別性程式實踐中是至關重要的,它允許動態的替換類,修改配置,通常會使應用程式更加靈活,熟練工廠模式高級PHP開發人員是很重要的。

  工廠模式通常用來返回符合類似介面的不同的類,工廠的一種常見用法就是創建多態的提供者,從而允許我們基於應用程式邏輯或配置設定來決定應實例化哪一個類,例如,可以使用這樣的提供者來擴展一個類,而不需要重構應用程式的其他部分,從而使用新的擴充後的名稱。

  通常,工廠模式有一個關鍵的構造,根據一般原則命名為Factory的靜態方法,然而這只是一種原則,工廠方法可以任意命名,這個靜態還可以接受任意資料的參數,必須傳回一個物件。

class YunSuan
{
    public $a;
    public $b;
    function Suan()
    {
        echo "对两个数进行运算";
    }
class gongchang
{   //功能 : 给一个参数,返回一个对象
    static function chanpin($name)
    {
        switch($name)
        {
            case "'+":
                return new jia();
                break;
            case "-";
                return new jian();
                break;
        }
    }
}

$a=gongchang::chanpin("+");
更多PHP中單例模式與工廠模式相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn