<?phpuml類圖如下:class book
public function gettitle()
public function getauthor()
}class bookfactory
public function getbook($title)
return $this->books[$title]; }}
class bookshelf
public function show() }}
class client
$shelf->add($book_1);
$shelf->add($book_2);
$shelf->add($book_3);
$shelf->show();
}}client::main();
?>
補充乙個例項:
<?php//乙個產品有isbn號和名字
class product
//享元類,提取出共性,同乙個isbn號對應的名字不會變,把這本書名字提取出來,放入享元物件,這樣享元物件就儲存了內蘊狀態,外蘊狀態是isbn號碼
class book
public function show() }
//享元物件生產工廠,傳入外蘊物件,返回對應的享元物件。
class bookfactory
return $this->books[$isbn]; }}
$obj = new bookfactory();
$book = $obj->getbook('1111','php高階程式設計');
$book2 = $obj->getbook('1111','');
$book2->show();
?>
設計模式之享元模式 PHP實現
減少建立物件的數量,以減少記憶體占用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。享元模式嘗試重用現有的同類物件,如果未找到匹配的物件,則建立新物件。在有大量物件時,有可能會造成記憶體溢位,我們把其中共同的部分抽象出來,如果有相同的業務請求,直接...
實現設計模式 享元模式
享元模式其實類似於物件池。如果系統中有大量的細粒度物件,建立這些物件是不小的開銷。如果能共享和反覆使用這些物件,那麼就可以減少物件數量,提高系統效能。下面實現了乙個享元工廠,可以作為參考。include include namespace dp t get const param param ret...
設計模式之享元模式
1 享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 2 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。3 思考 為什麼要有unsh...