对不好的问题标题表示抱歉。
假设我有DateRange类,它基本上只包含一个开始日期和结束日期。
我的问题是:我如何表示计算日期范围,例如“本周”,“过去两周”,“上个月”和“本季度”,以便多个客户可以使用这些计算的日期范围一致的方式?也就是说,我将拥有多个类的多个对象,这些对象都需要知道“本周”是什么。
我可以将它们构建到DateRange中,但这似乎不是一个好的解决方案,因为可能会添加更多或者某些可能随着时间的推移而变得过时....实际上这肯定会发生。我可以将DateRange抽象化并扩展它,但之后我会有一堆小类。我可以创建一些计算这些日期的静态助手类。你怎么能解决这个问题?
dateRange = new DateRange(RangeEnum.THISWEEK));
或
dateRange = new ThisWeek();
或
dateRange = DateHelper.getThisWeek();
或
为了给这个东西增加一个额外的扳手,让我们说我还需要代表一个范围,比如“包含2008年5月1日的工作周”。说明这一点,我倾向于帮助班......只是感觉很尴尬,有一大堆愚蠢的方法。
答案 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();
你是对的,你会得到一堆方法,但是如果你要继承某些东西,你会得到一堆类。这样你就知道在哪里看。