談談JAVA實現節假日驗證

我們需要兩個類,第一個類:

談談JAVA實現節假日驗證

我們叫它驗證類。

第二個類:

談談JAVA實現節假日驗證

它是對法定節假日的抽象。

第一步開始:

當驗證類被初始化的時候,會加載本年的所有法定節假日到一個list裡:

談談JAVA實現節假日驗證

那麼,Holiday這個類,setHolidayRange與setWorkDayRange這兩個函數負責的就是處理法定節假日的休息日與調休日。

談談JAVA實現節假日驗證

以上為setHolidayRange代碼,setWorkDayRange相似。

接下來,當我們調用驗證類的todayIsHoliday方法時,它會判斷當前日期是否為法定節假日的休息日,再判斷當前日期是否不在調休日內,最後判斷是否是週末,代碼如下:

談談JAVA實現節假日驗證

其中,這裡有兩個關鍵函數:

isHoliday和inAdjustDay:

isHoliday 原理就是通過循環判斷傳入的日期是否在法定節假日的休息日列表裡:

談談JAVA實現節假日驗證

而inAdjustDay原理同上:

談談JAVA實現節假日驗證

這裡的兩個方法又各自調用了Holiday類的接口:

談談JAVA實現節假日驗證

這兩個方法也是通過再次循環判斷傳入的日期是否在內部所維護的休息日列表或工作日列表,來決定是否是休息日或者是工作日。

代碼很零散,關注並私信回覆“節假日驗證”我獲取github地址。

擴展

在初始化驗證類的時候,做了手動添加節假日的操作,這是一種不優美的實現,

能否通過第三方api或者讀取外部配置來進行添加節假日?

這是一個想法。


分享到:


相關文章: