php 實現設計模式之 享元模式

2022-02-15 15:27:52 字數 932 閱讀 6534

<?php 

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();

?>

uml類圖如下:

補充乙個例項:

<?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...