nightlostk
2019-08-24 12:06
只是添加else{}的地方不一样,有什么区别吗?
使用枚举,表格驱动的方法优化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里面修改,除非是机器人,最重要的是解耦,代码可以独立调配使用。
主要是降低耦合,个人觉得
大话PHP设计模式
62160 学习 · 230 问题
相似问题