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

Oop OOD:表示计算值的多个对象,oop,Oop,对不起,问题标题不好 假设我有一个DateRange类,它基本上只包含开始日期和结束日期 我的问题是:如何表示计算的日期范围,例如“本周”、“过去两周”、“上个月”和“本季度”,以便多个客户可以一致地使用这些计算的日期范围?也就是说,我将有多个类的多个对象,它们都需要知道“本周”是什么 我可以将它们构建到DateRange中,但这似乎不是一个好的解决方案,因为随着时间的推移,可能会添加更多的内容,或者一些内容可能会过时……事实上,这种情况肯定会发生。我可以让DateRange抽象并扩展它,但接下

对不起,问题标题不好

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

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

我可以将它们构建到DateRange中,但这似乎不是一个好的解决方案,因为随着时间的推移,可能会添加更多的内容,或者一些内容可能会过时……事实上,这种情况肯定会发生。我可以让DateRange抽象并扩展它,但接下来我会有一堆小类。我可以创建某种静态助手类来计算这些日期。你如何处理这个问题

dateRange=新的日期范围(RangeEnum.THISWEEK))

dateRange=新的本周()

dateRange=DateHelper.getThisWeek()

?


为了给这件事增加一点难度,假设我还需要表示一个范围,比如“包含日期2008年5月1日的工作周”。说到这里,我倾向于helper类……有一大堆愚蠢的方法让我感觉很尴尬。

我会选择helper类

DateRange dr = Helper.getThisWeek();

你是对的,你会得到一堆方法,但如果你想把某个东西子类化,你会得到一堆类。这样,您就可以确定在哪里查找了。

我将使用helper类

DateRange dr = Helper.getThisWeek();

你是对的,你会得到一堆方法,但如果你想把某个东西子类化,你会得到一堆类。通过这种方式,您可以确定要查看的位置。

为什么要创建帮助器类。在.NET framework中使用的常见习惯用法是向现有类添加静态属性

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

为什么要创建帮助器类。在.NET framework中使用的常见习惯用法是向现有类添加静态属性

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

这是有道理的。从本质上讲,“helper类”的概念只是集成到DateRange类中。一方面,这感觉迫使笪特让锷对业务需求了解得太多,而不应该这么做……另一方面,它很简单,也不是什么大不了的事情。在金融系统中,本周、本月或本季度的构成可能会有所不同,因此它们的定义必须是有意义的业务对象。从本质上讲,“helper类”的概念只是集成到DateRange类中。一方面,这感觉迫使笪特让锷对业务需求了解得太多,而不应该这么做……另一方面,它很简单,也不是什么大不了的事情。在金融系统中,构成本周、本月或本季度的内容可能会有所不同,因此它们的定义必须在业务对象中