亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

使用了策略模式并沒有避免添加else{}代碼啊

只是添加else{}的地方不一樣,有什么區別嗎?

正在回答

3 回答

使用枚舉,表格驅動的方法優化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();



1 回復 有任何疑惑可以回復我~

主要是很方便切換上下文啊,利于控制,不然每次一改,都要從if else里面修改,除非是機器人,最重要的是解耦,代碼可以獨立調配使用。

0 回復 有任何疑惑可以回復我~

主要是降低耦合,個人覺得

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

使用了策略模式并沒有避免添加else{}代碼啊

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號