我经常发现需要设计具有可配置功能的对象。举例来说,假设我正在创建一个DateIterator。可配置选项可能是迭代闭区间[start,end]或开放区间[start,end)。(1)在我看来,不优雅的解决方案-仅限于一个true/false配置选项newDateIterator(booleanopenInterval);(2)类型安全的枚举方式——通常有点笨重newDateIterator(Interval.OPEN_END);(3)非常规的尝试——很好但不太直接newDateIterator().openEnd();(4)继承方法——通常是过度工程newOpenEndedDateIt