PHP設計模式-享元模式

適用性

php享元(輕量級)模式

就是緩存了創(chuàng)建型模式創(chuàng)建的對象飘弧,不知道為什么會歸在結構型模式中,個人覺得創(chuàng)建型模式更合適砚著,哈哈~

其次次伶,享元強調的緩存對象,外觀模式強調的對外保持簡單易用稽穆,是不是就大體構成了目前牛逼哄哄且滿大的街【依賴注入容器】

下面我們借助最簡單的’工廠模式‘來實現(xiàn)享元模式冠王,就是給工廠加了個緩存池

UML

代碼示例

/**

* 農場

*

* 生產動物

*/

class Farm

{

? /**

? * 對象緩存池

? * @var array

? */

? private $_farmMap = [];

? /**

? * 構造函數(shù)

? */

? public function __construct()

? {

? ? echo "-----------初始化了一個農場----------- \n\n";

? }

? /**

? * 生產方法

? *

? * 生產農物

? *

? * @param? string $type 農場類型

? * @return mixed

? */

? public function produce($type='')

? {

? ? // 對象緩存池判斷

? ? if (key_exists($type, $this->_farmMap)) {

? ? ? echo "來自緩存池-> ";

? ? ? return $this->_farmMap[$type];// 返回緩存

? ? }

? ? switch ($type) {

? ? ? case 'chicken':

? ? ? ? return $this->_farmMap[$type] =? new Chicken();

? ? ? ? break;

? ? ? case 'pig':

? ? ? ? return $this->_farmMap[$type] =? new Pig();

? ? ? ? break;

? ? ? default:

? ? ? ? echo "該農場不支持生產該農物~ \n";

? ? ? ? break;

? ? }

? }

}

/**

* 動物接口

*/

interface AnimalInterface

{

? /**

? * 類型獲取

? *

? * @return string

? */

? public function getType();

}

/**

* 實體雞

*

*/

class Chicken implements AnimalInterface

{

? /**

? * 類別

? * @var string

? */

? private $_type = '';

? /**

? * 構造函數(shù)

? */

? public function __construct()

? {

? }

? /**

? * 類型獲取

? *

? * @return string

? */

? public function getType()

? {

? ? echo "這是只雞~ \n";

? }

}

/**

* 實體豬

*

*/

class Pig implements AnimalInterface

{

? /**

? * 類別

? * @var string

? */

? private $_type = '';

? /**

? * 構造函數(shù)

? */

? public function __construct()

? {

? }

? /**

? * 類型獲取

? *

? * @return string

? */

? public function getType()

? {

? ? echo "這是只豬~ \n";

? }

}

// 初始化一個工廠

$farm = new Farm();

//-----------初始化了一個農場-----------

// 成產一只雞

$farm->produce('chicken')->getType();

//這是只雞~

// 再生產一只雞

$farm->produce('chicken')->getType();

//來自緩存池-> 這是只雞~

// 成產一只豬

$farm->produce('pig')->getType();

//這是只豬~

// 再生產一只豬

$farm->produce('pig')->getType();

//來自緩存池-> 這是只豬~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市舌镶,隨后出現(xiàn)的幾起案子柱彻,更是在濱河造成了極大的恐慌豪娜,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哟楷,死亡現(xiàn)場離奇詭異瘤载,居然都是意外死亡,警方通過查閱死者的電腦和手機卖擅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門鸣奔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惩阶,你說我怎么就攤上這事挎狸。” “怎么了断楷?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵锨匆,是天一觀的道長。 經常有香客問我冬筒,道長恐锣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任账千,我火速辦了婚禮侥蒙,結果婚禮上,老公的妹妹穿的比我還像新娘匀奏。我一直安慰自己,他們只是感情好学搜,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布娃善。 她就那樣靜靜地躺著,像睡著了一般瑞佩。 火紅的嫁衣襯著肌膚如雪聚磺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天炬丸,我揣著相機與錄音瘫寝,去河邊找鬼。 笑死稠炬,一個胖子當著我的面吹牛焕阿,可吹牛的內容都是我干的。 我是一名探鬼主播首启,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼暮屡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毅桃?” 一聲冷哼從身側響起褒纲,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤准夷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后莺掠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衫嵌,經...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年彻秆,在試婚紗的時候發(fā)現(xiàn)自己被綠了渐扮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡掖棉,死狀恐怖墓律,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情幔亥,我是刑警寧澤耻讽,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站帕棉,受9級特大地震影響针肥,放射性物質發(fā)生泄漏。R本人自食惡果不足惜香伴,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一慰枕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧即纲,春花似錦具帮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至膊畴,卻和暖如春掘猿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唇跨。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工稠通, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人买猖。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓改橘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親政勃。 傳聞我的和親對象是個殘疾皇子唧龄,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內容