課程
/后端開發
/PHP
/大話PHP設計模式
只是添加else{}的地方不一樣,有什么區別嗎?
2019-08-24
源自:大話PHP設計模式 7-2
正在回答
使用枚舉,表格驅動的方法優化if...else...代碼?粗糙寫法如下,代碼其實還可以優化 class?AdvertisingRoleEnum{ ????const?MALE???=?1; ????const?FEMALE?=?0; ????public?static?function?getStrategy($gender){ ????????$listExplain[self::MALE]???=?new?\IMooc\MaleUserStrategy(); ????????$listExplain[self::FEMALE]?=?new?\IMooc\FemaleUserStrategy(); ????????return?$listExplain[$gender]; ????} } class?Page { ????protected?$strategy; ????function?index() ????{ ????????echo?"AD:"; ????????$this->strategy->showAd(); ????????echo?"<br/>"; ????????echo?"Category:"; ????????$this->strategy->showCategory(); ????????echo?"<br/>"; ????} ????function?setStrategy(\IMooc\UserStrategy?$strategy){ ????????$this->strategy?=?$strategy; ????} } $page?=?new?Page(); $gender?=?isset($_GET['female'])??0; $strategy?=?AdvertisingRoleEnum::getStrategy($gender); //if?(isset($_GET['female'])){ //????$strategy?=?new??\IMooc\FemaleUserStrategy(); //}else{ //????$strategy?=?new?MaleUserStrategy(); //} $page->setStrategy($strategy); $page->index();
主要是很方便切換上下文啊,利于控制,不然每次一改,都要從if else里面修改,除非是機器人,最重要的是解耦,代碼可以獨立調配使用。
主要是降低耦合,個人覺得
舉報
幫助PHPer具備使用設計模式解決工程中復雜邏輯的能力
1 回答策略模式經常使用嗎?
2 回答這個裝飾器模式跟策略模式有什么區別?
4 回答策略模式的依賴倒置和控制反轉具體應用
1 回答使用代理模式后出現的bug
2 回答PHP設計模式的觀察者模式, 添加事件觀察
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2020-11-05
2019-09-16
主要是很方便切換上下文啊,利于控制,不然每次一改,都要從if else里面修改,除非是機器人,最重要的是解耦,代碼可以獨立調配使用。
2019-09-02
主要是降低耦合,個人覺得