假如我要实现一个JAVA定时器,有五种不同的周期模式,如何在这五种不同的周期模式之间进行切换呢,情况类似于杀毒软件的定时更新,可以在配置界面上选择进行每一天或每几天,每周某几天,每月某一天,某一个特定日期,或者手动,在各个周期进行切换时,上一个定时器是如何退出的呢?怎样判断上个定时器是哪个定时器对象呢?该怎么设计呢?我现在已经写了定时器类,把任务和周期作为参数,所有不同周期的定时器都可以调用这个构造函数,以及在定时器和手动模式之间如何切换,主要是设计问题,请大家帮忙想想,给分析一下,欢迎讨论。谢谢了。

解决方案 »

  1.   

    尝试写个辅助类或叫定时器管理类,属性是定时器,任务,离启动的剩余时间,
    结合日历类计算用户要求的的一些特定日期离现在时间的毫秒数,离启动的剩余时间。
    每次设置离启动的剩余时间都把定时器取消任务,重新创建定时器对象。
      

  2.   

    1. 模式类,这个类的数据最好能记到文件里
       包含属性1). 周期模式
                   可以把它记成一个毫秒值, 如果选一天, 就记成24小时, 如果选每隔一周, 就记成24*7, 依此类推.
               2). 设置时间
                   安装时间或者重新设置的那一刻
               3). 到期时间
                   应该更新的那一刻,如果这一刻更新了, 这个时间要再加一个周期模式
               4). 更新时间(一个用于计算的值)
                   更新的时间,记录更新的那一刻,一开始等于设置时间2. 线程维护上边的模式类
       用 更新时间 加上 周期模式, 当等于 到期时间
               1). 将到期时间再延长一个周期模式,就是加就可以了.
               2). 做该做的事
       如果没等于到期时间, 就将更新时间一秒一秒的累加