《分析模式:可重用对象模型》学习笔记之四:企业财务分析中的观察和测量06

下面是一些用Java 给出的代码示例(Sample code),是作者最喜欢的Date Range。
class DateRange...
public DateRange (Date start, Date end) {
this (new MfDate(start), new MfDate(end));
}
public DateRange (MfDate start, MfDate end) {

this.start = start;
this.end = end;
}
class DateRange...
public MfDate end(){
return end;
}
public MfDate start() {
return start;
}
public String toString() {
if (isEmpty()) return "Empty Date Range";
return start.toString() + " - " + end.toString();
}
public boolean isEmpty() {
return start.after(end);
}
Range 最关键的方法:includes()方法。
class DateRange...
public boolean includes (MfDate arg) {
return !arg.before(start) && !arg.after(end);
}
为开区间和空白范围提供的构造函数。
class DateRange...
public static DateRange upTo(MfDate end) {

return new DateRange(MfDate.PAST, end);
}
public static DateRange startingOn(MfDate start) {
return new DateRange(start, MfDate.FUTURE);
}
public static DateRange EMPTY = new DateRange(new MfDate(2000,4,1), new MfDate(2000,1,1));
对范围进行比较的方法也非常有用。
class DateRange...
public boolean equals (Object arg) {
if (! (arg instanceof DateRange)) return false;
DateRange other = (DateRange) arg;
return start.equals(other.start) && end.equals(other.end);
}
public int hashCode() {
return start.hashCode();
}
public boolean overlaps(DateRange arg) {
return arg.includes(start) || arg.includes(end) || this.includes(arg);
}
public boolean includes(DateRange arg) {
return this.includes(arg.start) && this.includes(arg.end);
}
其他一些可能有用的方法,例如两个范围的差(返回一个范围的下限和另一个范围上限之间的范围)
class DateRange...

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值