通常,我发现需要设计具有可配置功能的对象。
为了举例说明,假设我正在创建DateIterator
。可配置的选项可以是是迭代封闭时间间隔 [start, end]
还是开放时间间隔 [start, end)
。
new DateIterator(boolean openInterval);
new DateIterator(Interval.OPEN_END);
new DateIterator().openEnd();
new OpenEndedDateIterator();
为此,我考虑了一些较差的选择,例如基于整数的配置
new DateIterator(Interval.OPEN_END);
或基于属性的配置。还有其他方法吗?您更喜欢哪种方法?
最佳答案
我会说这里的Builder模式很有意义:
DateIterator di =
DateIterator.builder()
.withStartDate(new Date())
.withOpenEnd()
.build();
这样,您的实际DateIterator可能是不可变的,而
DateIterator.builder()
返回的构建器将完成配置工作。关于java配置/参数传递设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7230120/