關于 java.util.calender 設計時候一些想法
關于 java.util.calender 設計時候一些想法
new calender() 以后,考慮到性能 setday(), setyear() 都完成后,如果遇到要get 輸出才根據(jù)情況重新計算.
如果我們遇到了設計一個處理信息的類,這個類有多個參與計算的要素,如果計算復雜,那就完全沒有必要經(jīng)常重復計算。
class a {
private int data1; //數(shù)據(jù)元素1
private long date2;? //數(shù)據(jù)元素2
//變化標志? 如果true
private boolean? flag;?
setdate1 (){? flag =true; //元素變化過了? } ..
getdate1(){?? }..
process(){
? if(flag){
?? //確定更新后? 重新計算
? }
}
getresult(){
?? process();? // 計算性的結(jié)果
?? return ...
? }
}
calender 因為使用了這種計算方式的一些細節(jié):
初時日期 1999-8-31日
調(diào)用 set(Calendar.MONTH, Calendar.SEPTEMBER)? 便更了數(shù)據(jù)模型了一部分
因為不存在?? 9月31日?? 所以??? 1999 - 9 月 只有 30日
一旦使用get方法返回 結(jié)果。那么重新計算獲得 10月1日 。
(根據(jù)
例如,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 日。
調(diào)用 set(Calendar.MONTH, Calendar.SEPTEMBER) 將該日期設置為 1999 年 9 月 31 日。
如果隨后調(diào)用 getTime(),那么這是分析 1999 年 10 月 1 日的一個暫時內(nèi)部表示。
但是,在調(diào)用 getTime() 之前調(diào)用 set(Calendar.DAY_OF_MONTH, 30) 會將該日期
設置為 1999 年 9 月 30 日,因為在調(diào)用 set() 之后沒有發(fā)生重新計算。
?
posted on 2006-10-23 14:35 小高 閱讀(848) 評論(0) 編輯 收藏 所屬分類: java基礎