国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

常用設(shè)計(jì)模式之狀態(tài)模式及其PHP實(shí)現(xiàn)

瀏覽:4日期:2022-09-13 09:37:14

狀態(tài)模式是一種行為型模式,它允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。對(duì)象看起來(lái)似乎修改了它的類(lèi),狀態(tài)模式變化的位置在于對(duì)象的狀態(tài)。

主要角色抽象狀態(tài)(State)角色:定義一個(gè)接口,用以封裝環(huán)境對(duì)象的一個(gè)特定的狀態(tài)所對(duì)應(yīng)的行為具體狀態(tài)(ConcreteState)角色:每一個(gè)具體狀態(tài)類(lèi)都實(shí)現(xiàn)了環(huán)境(Context)的一個(gè)狀態(tài)所對(duì)應(yīng)的行為環(huán)境(Context)角色:定義客戶端所感興趣的接口,并且保留一個(gè)具體狀態(tài)類(lèi)的實(shí)例。這個(gè)具體狀態(tài)類(lèi)的實(shí)例給出此環(huán)境對(duì)象的現(xiàn)有狀態(tài)適用性一個(gè)對(duì)象的行為取決于它的狀態(tài),并且它必須在運(yùn)行時(shí)刻根據(jù)狀態(tài)改變它的行為一個(gè)操作中含有龐大的多分支的條件語(yǔ)句,且這些分支依賴(lài)于該對(duì)象的狀態(tài)。這個(gè)狀態(tài)通常用一個(gè)或多個(gè)枚舉常量表示。通常,有多個(gè)操作包含這一相同的條件結(jié)構(gòu)。State模式模式將每一個(gè)條件分支放入一個(gè)獨(dú)立的類(lèi)中。這使得你可以要所對(duì)象自身的情況將對(duì)象的狀態(tài)作為一個(gè)對(duì)象,這一對(duì)象可以不依賴(lài)于其他對(duì)象而獨(dú)立變化類(lèi)圖

常用設(shè)計(jì)模式之狀態(tài)模式及其PHP實(shí)現(xiàn)

實(shí)例

<?phpinterface State { // 抽象狀態(tài)角色 public function handle(Context $context); // 方法示例}class ConcreteStateA implements State { // 具體狀態(tài)角色A private static $_instance = null; private function __construct() {} public static function getInstance() { // 靜態(tài)工廠方法,返還此類(lèi)的唯一實(shí)例if (is_null(self::$_instance)) { self::$_instance = new ConcreteStateA();}return self::$_instance; } public function handle(Context $context) {$context->setState(ConcreteStateB::getInstance()); } }class ConcreteStateB implements State { // 具體狀態(tài)角色B private static $_instance = null; private function __construct() {} public static function getInstance() {if (is_null(self::$_instance)) { self::$_instance = new ConcreteStateB();}return self::$_instance; } public function handle(Context $context) {$context->setState(ConcreteStateA::getInstance()); }}class Context { // 環(huán)境角色 private $_state; public function __construct() { // 默認(rèn)為stateA$this->_state = ConcreteStateA::getInstance(); } public function setState(State $state) {$this->_state = $state; } public function request() {$this->_state->handle($this); }}// client$context = new Context();$context->request();$context->request();$context->request();$context->request();?>優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

它將與特定狀態(tài)相關(guān)的行為局部化它使得狀態(tài)轉(zhuǎn)換顯示化State對(duì)象可被共享
標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 中国老太卖淫播放毛片 | 美国三级在线观看 | 日韩高清在线播放不卡 | 国产后式a一视频 | 一本伊大人香蕉高清在线观看 | 亚洲乱人伦精品图片 | 欧美激情欧美狂野欧美精品免费 | 国产三级全黄 | 久久免费精品一区二区 | 国产精品视频一区二区三区 | 日本免费一区二区三区视频 | 久久超级碰 | 加勒比色久综合在线 | 天天看有黄有色大片 | 亚洲第一成年网站大全亚洲 | 国产深夜福利视频在线播放 | 久久久久国产精品免费免费 | 日本护士一级毛片在线播放 | 国产在线精品一区二区高清不卡 | 国产一区二区三区国产精品 | 亚洲欧美精品一区天堂久久 | 成人涩涩屋福利视频 | 狠狠色丁香久久婷婷综 | 亚洲精品久久久午夜伊人 | 男人操女人逼逼视频 | 91最新网站免费 | 免费观看一级欧美大 | 九九99靖品 | 亚洲美女色成人综合 | 亚洲美女黄视频 | 亚洲精品久久久久久久网站 | 精品久久久久国产免费 | 日本成人免费在线 | 农村寡妇一级毛片免费看视频 | 亚洲成人免费网址 | 精品午夜国产在线观看不卡 | 欧美片能看的一级毛片 | 全免费a级毛片免费看不卡 全免费毛片在线播放 | 在线精品国产 | 精品国产品国语在线不卡丶 | 黄a一级|