关于 java.util.calender 设计时候一些想法

关于 java.util.calender 设计时候一些想法

关于 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() 之后没有发生重新计算。


 

你可能感兴趣的:(关于 java.util.calender 设计时候一些想法)