優雅的使用if else

2021-10-02 03:50:20 字數 1636 閱讀 8930

簡單的if(){} else if(){} 還好,就怕if {}else if()的裡面給你整個俄羅斯套娃。畫面太美:

// 判斷書本狀態 

private void testif(string status)

}else if("done".equals(status))else if("read".equals(status))

}

等到上面的場景程式設計 20多個狀態時候,有沒有火葬場的感覺,修改一次豈不是會被坑死。

有人就說了,引入switch啊 其實麼有什麼差別還是太多行。

那引入衛模式呢  位模式個人感覺是減少了else 語句,**看起來更簡潔一點:

上面**的衛模式:

private void testwei(string stauts)

if("done".equals(stauts))

if("read".equals(stauts))

}

也是可以,但這種過多的修改也不方便。

像這種狀態類的都可以封裝成enum型別 並抽象介面 進行操作 ,就是啥幹啥,相互對應

1、定義公共介面 

public inte***ce bookoperation
2、定義列舉 實現 該介面

public enum bookenum  implements  bookoperation

},// 讀完

done

},// 在讀

read

}}

3、使用 

使用時候就直接傳入 該列舉物件就行了

private void testenum(bookenun bookeumn)
而且這種在新增新的book操作狀態時,只需要在bookenum中增加新的列舉即可。

除了列舉還有 工廠模式和策略模式

定義角色 :

class prepareop implements bookoperation

}class readop implements bookoperation

}class doneop implements bookoperation

}

定義工廠 bookfactory:

public class bookfactory 

public static bookoperation getbookop(string bookstatus)

}

使用

//工廠模式

private void testfactory(string stauts)

以後更改也同樣方便。 

定義context: 

public class bookcontext 

// 執行方法

public void dos()

}

直接使用 

//策略模式

private void testcontext()

不要再寫if else了,優雅的處理

專案 現大量的if else的判斷,根據傳參不同做不同的實現,這樣就會顯的 很臃腫,耦合性高。消除if else的方法有很多,包括命令模式 規則引擎 簡單工廠等。接下來會介紹的一種方法是使用列舉來處理這樣的大量判斷。1 首先定義乙個列舉類operator,列舉類裡面需要定義乙個方法public ab...

if else語句使用

if else的使用場景 當條件成立完成a操作,不成立完成b操作 if else語句的語法格式 if 要判斷的條件 條件滿足,完成a操作 else 條件不滿足,完成b操作 age int input 請輸入您的年齡 input函式返回的是字串資料 print age,type age 判斷年齡是否成...

使用減少ifelse使用

僅當做學習記錄 遇到如下需求 if condition else 可以這麼做 if condition do something 遇到如下需求 if user null else 可以這麼做 public class maintest public static user createuser 遇到...