【发布时间】:2011-08-29 12:32:48
【问题描述】:
我经常发现需要用可配置 功能来设计对象。
举例来说,假设我正在创建一个DateIterator。可配置的选项可能是是否迭代封闭区间 [start, end] 或开放区间 [start, end)。
- (1) 在我看来,不优雅的解决方案 - 仅限于一个 true/false 配置选项
new DateIterator(boolean openInterval);
- (2) 类型安全的枚举方式——通常有点笨重
new DateIterator(Interval.OPEN_END);
- (3) 非常规的尝试 - 不错但不太直接
new DateIterator().openEnd();
- (4) 继承方式——经常过度设计
new OpenEndedDateIterator();
为此提供了一些我认为较差的替代方案,例如基于整数的配置new DateIterator(Interval.OPEN_END); 或基于属性的配置。
还有其他方法吗?您更喜欢哪种方法?
【问题讨论】:
标签: java configuration parameter-passing