善用多型來改善你的switch語句
下面舉的這乙個例子,其實和《重構》第一章裡面的那乙個經典例項很像的,《重構》一本書絕對是一本好書,非常不錯值得推薦的一本書。
舉乙個例子,是我現在的乙個專案裡面一位同事寫的一小段**,**如下,它可以根據不同的操作符進行加減乘除方面的操作,而且這一些操作很有可能發生一些變化。當重構成我的現在每天的麵包和水的時候,我看到switch語句,就想能不能把改良一下。雖然改善後,**量是增加,但從可維護的角度來講,我個人認為還是值得的,特別在你需要的操作的switch語句裡面很有可能發生需求變化的時候。
[code]private void cacudata(datarange datarange, char oper)
}/** 處理除數方法; */
private void divisionprocess(double firstdata, double seconddata) else
}[/code]
我看到firstdata,seconddata就想能不能把它們放到乙個range範圍的類裡面是不是更好呢,於是新建了乙個
[code] public class doubledatarange
public double getfirstdata()
public double getseconddata()
}[/code]
然後我們再新建一系列操作方面的類,為每乙個操作類新增乙個類,也是這一次重構最核心的東西,其**如下:
[code]abstract class operation
class plusoperation extends operation
}class subtractoperation extends operation
}class multiplyoperation extends operation
}class divisionoperation extends operation else
}}[/code]
接下來的工作就很簡單啦,把以前兩段**全部刪除掉,換上如下的**,雖然這乙個時候也有switch語句,但它只是純粹地變成了乙個取operation的類而已,並沒有包含任何的操作。
[code]private void cacudata(datarange datarange, char oper)
private operation operation;
private void setoperation(char oper)}}
[/code]
switch語句的優化
switch語句的優化 flyfish 通常的形式 void test int t 一 當 段比較多時候 就會提取函式 void test int t void function1 void function2 二 當類中有型別時可以使用設計模式優化 例如class employee 優化為 cla...
switch語句的妙用
switch語句的普通用法很簡單,如下 var a 3 switch a 這裡a和case列表中從上而下逐一做比較,如果匹配就執行case中的 若有break則跳出,無break則繼續往下匹配,直到新的匹配和break或switch 塊結束。注意 a和case值的匹配演算法是執行嚴格相等比較的 通常...
switch語句的語法
關於switch語句 1.switch語句也屬於選擇結構,也是分支語句 2.switch語句的語法結構 乙個比較完整的switch語句應該這樣編寫 switch int或string型別的字面值或變數 3.switch語句的執行原理 switch後面小括號當中的 資料 和case後面的 資料 進行一...