單例模式
1.概念:保證系統中,應用該模式的乙個類只有乙個例項。即乙個類只有乙個物件例項(節省例項化物件時間以及占用的空間)
2.三私一公:私有的構造方法 私有的轉殖方法 私有的靜態屬性 公有的靜態方法(對外提供獲取例項的方法)
3.適用場景:經常使用在一些連線場景 mysql,redis等連線
4.編碼:
/**
* created by phpstorm.
* user: 申大俠
* date: 2019/4/10
* time: 11:13
*/class singleton
public function __clone()
public static function getinstance()
return self::$instance;
}public function set($name)
}$obj1 = singleton::getinstance();
$obj2 = singleton::getinstance();
$obj1->set("shen");
$obj2->set("ning");
echo $obj1->name; //輸出結果: ning
echo $obj2->name; //輸出結果: ning
//原因: 單例模式只new一次 開闢一塊空間 所以後續的例項都是操作的同一塊空間
//引用easyswoole裡的單例實現
trait singletont
return self::$instance;
}}// 注: 首先,他們的區別只有在繼承中才能體現出來,如果沒有任何繼承,那麼這兩者是沒有區別的。
//然後,new self()返回的例項是萬年不變的,無論誰去呼叫,都返回同乙個類的例項,而new static()則是由呼叫者決定的
//具體請移駕:
class test
}$obj1 = test::getinstance();
$obj2 = test::getinstance();
$obj1->set("shen");
$obj2->set("ning");
echo $obj1->name; //輸出結果: ning
echo $obj2->name; //輸出結果: ning
工廠模式
1.概念:是用工廠方法代替new操作的一種模式。只需呼叫工廠裡的方法得到例項,大大解耦**,如果後期修改類功能或者類名,只需修改工廠
方法就ok,不需要涉及到業務**
2.使用場景:對上層的使用者隔離物件建立的過程;或者是物件建立的過程複雜,使用者不容易掌握;或者是物件建立要滿足某種條件,
這些條件是業務的需求也好,是系統約束也好,沒有必要讓上層使用者掌握,增加別人開發的難度。
補充:mvc裡的db class來說明,外部呼叫的時候只需選擇自己所需的表名,該工廠會去呼叫真實資料庫處理方法,然後返回你想要的結果
3.編碼:
/**
* created by phpstorm.
* user: 申大俠
* date: 2019/4/10
* time: 13:13
*/class dbfactory
else
}}trycatch (\exception $e)
PHP單例模式和工廠模式
單例模式又稱為職責模式,它用來在程式中建立乙個單一功能的訪問點,通俗地說就是例項化出來的物件是唯一的。所有的單例模式至少擁有以下三種公共元素 1.它們必須擁有乙個建構函式,並且必須被標記為private 2.它們擁有乙個儲存類的例項的靜態成員變數 3.它們擁有乙個訪問這個例項的公共的靜態方法 單例類...
php 單例模式和工廠模式
header content type text html charset utf 8 定義字元編碼,防止亂碼 單例類 class single private function clone 定義乙個空方法防止被外部轉殖 public static function getinstance 定義乙個...
PHP單例模式,工廠模式
單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。三私一公 三私一公 class single 私有的轉殖 private function clone 公有的獲取例項的方法 public static function getinstance return self inst...