java 多態替代switch表達式+lambda表達式

原代碼:

可以看到邏輯上它是根據line字符串是否包含了某關鍵詞,來做不同的處理,處理可能複雜或者簡單,並且是有優先順序關係的。 因此他使用了n個else-if來處理,每加1個關鍵詞,圈複雜度就加1。

此問題處理的關鍵在於,如何根據不同關鍵詞,去執行不同的操作,而且這個操作一般都很短。 那麼根據以下思路:

  • 不同關鍵字 -> 枚舉類
  • 執行不同操作 -> 枚舉對象各持有1各 操作接口實現
  • 操作行一般都很短 -> labamda表達式

那麼我先定義1個set操作接口如下,提供給枚舉類中各對象作爲私有成員:

接着再定義枚舉類:

然後枚舉類中的枚舉用lambda實現:

原方法中的if-else則就可以改爲非常簡單的:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章