利用语言的动态特性减少switch
以前也曾写过这样的代码,但没有特殊注意过,今天大家讨论收银台的问题时候,再提起这样的设计,却感觉非常有效。
因为分支很多,使用switch-case几乎是不可避免的,而这对与代码的维护与理解却不是一件很好的事情,在增加分支的时候,也是一种比较郁闷的事情。利用语言的动态特性与模块化的设计,可以在一定程度上减轻这种问题。
class A{};
class B{};
$arr_actions = array(
'a' => 'A',
'b' => 'B',
);
function do_action_no_switch($action){
global $arr_actions;
if(!array_key_exists($action, $arr_actions)){
return false;
}
$job = new $arr_actions[$action];
//job->do...
}
do_action_no_switch('a');
---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/04/21/reduce-the-use-of-the-dynamic-nature-of-language-switch.html
---------------------------------------------------------------
您可能会喜欢: