OOD:表示计算值的多个对象

时间:2009-03-06 07:21:23

标签: oop

对不好的问题标题表示抱歉。

假设我有DateRange类,它基本上只包含一个开始日期和结束日期。

我的问题是:我如何表示计算日期范围,例如“本周”,“过去两周”,“上个月”和“本季度”,以便多个客户可以使用这些计算的日期范围一致的方式?也就是说,我将拥有多个类的多个对象,这些对象都需要知道“本周”是什么。

我可以将它们构建到DateRange中,但这似乎不是一个好的解决方案,因为可能会添加更多或者某些可能随着时间的推移而变得过时....实际上这肯定会发生。我可以将DateRange抽象化并扩展它,但之后我会有一堆小类。我可以创建一些计算这些日期的静态助手类。你怎么能解决这个问题?

dateRange = new DateRange(RangeEnum.THISWEEK));

dateRange = new ThisWeek();

dateRange = DateHelper.getThisWeek();

为了给这个东西增加一个额外的扳手,让我们说我还需要代表一个范围,比如“包含2008年5月1日的工作周”。说明这一点,我倾向于帮助班......只是感觉很尴尬,有一大堆愚蠢的方法。

2 个答案:

答案 0 :(得分:3)

为什么要创建一个帮助器类。 .NET框架中使用的常用习惯是将静态属性添加到现有类中。

class DateRange
{
     DateRange ourCurrentWeek = null;

     public static DateRange ThisWeek
     {
          get
          {
              //create ourCurrentWeek if not yet assigned.
              //test current week; is it still correct or does it need updating
              return ourCurrentWeek;
          }
     }
 }

用法很简单: -

DateRange.ThisWeek

答案 1 :(得分:1)

我会选择助手类。

DateRange dr = Helper.getThisWeek();

你是对的,你会得到一堆方法,但是如果你要继承某些东西,你会得到一堆类。这样你就知道在哪里看。