這次的api對接,除了使用適配器模式和工廠模式凰慈,同時(shí)也用到了單例模式菱属。何為單例模式钳榨,單例模式應(yīng)該算是設(shè)計(jì)模式中較為簡單的模式了。它確保某個(gè)類只有一個(gè)實(shí)例纽门,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例薛耻。
在計(jì)算機(jī)系統(tǒng)中,線程池赏陵、緩存昭卓、日志對象愤钾、對話框、打印機(jī)候醒、數(shù)據(jù)庫操作能颁、顯卡的驅(qū)動(dòng)程序常被設(shè)計(jì)成單例,其中數(shù)據(jù)庫操作算是比較常見的一個(gè)應(yīng)用倒淫。
單例模式有以下3個(gè)特點(diǎn):
1.只能有一個(gè)實(shí)例伙菊。
2.必須自行創(chuàng)建這個(gè)實(shí)例。
3.必須給其他對象提供這一實(shí)例敌土。
之所以經(jīng)常使用數(shù)據(jù)庫單例模式镜硕,是因?yàn)镻HP一個(gè)主要應(yīng)用場合就是應(yīng)用程序與數(shù)據(jù)庫打交道的場景,在一個(gè)應(yīng)用中會(huì)存在大量的數(shù)據(jù)庫操作返干,針對數(shù)據(jù)庫句柄連接數(shù)據(jù)庫的行為兴枯,使用單例模式可以避免大量的new操作。因?yàn)槊恳淮蝞ew操作都會(huì)消耗系統(tǒng)和內(nèi)存的資源矩欠。同樣的場景财剖,在api對接的過程中,適配類的被調(diào)用也不需要每次被實(shí)例化癌淮,所以這里也使用單例模式躺坟。
class FuHeLe implements BaseInterface
{
private $allianceCode = '';
private $requestTime = '';
private $secretKey = '';
private $sign = '';
//靜態(tài)變量保存全局實(shí)例
private static $_instance = null;
//私有構(gòu)造函數(shù),防止外界實(shí)例化對象
private function __construct()
{
**********
}
//私有克隆函數(shù)乳蓄,防止外辦克隆對象
private function __clone()
{
}
//靜態(tài)方法咪橙,單例統(tǒng)一訪問入口
public static function getInstance()
{
if (is_null(self::$_instance) || isset (self::$_instance)) {
self::$_instance = new self ();
}
return self::$_instance;
}
}
以上就是單例模式的代碼,調(diào)用的時(shí)候只需要用return FuHeLe::getInstance() 即可虚倒。
大家喜歡可以訪問我的個(gè)人網(wǎng)站:http://www.yingminxing.com
如有疑問美侦,歡迎溝通交流:QQ:370399195, 微信:yingminxing1988