關于 java.util.calender 設計時候一些想法
new calender() 以后,考慮到性能 setday(), setyear() 都完成后,如果遇到要get 輸出才根據情況重新計算.
如果我們遇到了設計一個處理信息的類,這個類有多個參與計算的要素,如果計算復雜,那就完全沒有必要經常重復計算。
class a {
private int data1; //數據元素1
private long date2;? //數據元素2
//變化標志? 如果true
private boolean? flag;?
setdate1 (){? flag =true; //元素變化過了? } ..
getdate1(){?? }..
process(){
? if(flag){
?? //確定更新后? 重新計算
? }
}
getresult(){
?? process();? // 計算性的結果
?? return ...
? }
}
calender 因為使用了這種計算方式的一些細節:
初時日期 1999-8-31日
調用 set(Calendar.MONTH, Calendar.SEPTEMBER)? 便更了數據模型了一部分
因為不存在?? 9月31日?? 所以??? 1999 - 9 月 只有 30日
一旦使用get方法返回 結果。那么重新計算獲得 10月1日 。
(根據
例如,lenient 模式下的 GregorianCalendar 將 MONTH == JANUARY、DAY_OF_MONTH == 32 解釋為 February 1。
1月沒有 32天? 所以 就延后 1天 到了2月1日
?)
2006年10月23日14:29:40
下面這段來自 java 手冊翻譯。
示例:假定 GregorianCalendar 最初被設置為 1999 年 8 月 31 日。
調用 set(Calendar.MONTH, Calendar.SEPTEMBER) 將該日期設置為 1999 年 9 月 31 日。
如果隨后調用 getTime(),那么這是分析 1999 年 10 月 1 日的一個暫時內部表示。
但是,在調用 getTime() 之前調用 set(Calendar.DAY_OF_MONTH, 30) 會將該日期
設置為 1999 年 9 月 30 日,因為在調用 set() 之后沒有發生重新計算。
?