Joh*_*erg 8 java configuration parameter-passing
我经常发现需要设计具有可配置功能的对象.
举例来说,假设我正在创建一个DateIterator.可配置选项可能是迭代闭合间隔[start, end]还是开放端间隔[start, end).
new DateIterator(boolean openInterval);
Run Code Online (Sandbox Code Playgroud)
new DateIterator(Interval.OPEN_END);
Run Code Online (Sandbox Code Playgroud)
new DateIterator().openEnd();
Run Code Online (Sandbox Code Playgroud)
new OpenEndedDateIterator();
Run Code Online (Sandbox Code Playgroud)
为此我提出了一些我认为较差的替代方案,如基于整数的配置new DateIterator(Interval.OPEN_END);或基于属性的配置.
还有其他方法吗?您更喜欢哪种方法?
我会说Builder模式在这里有意义:
DateIterator di =
DateIterator.builder()
.withStartDate(new Date())
.withOpenEnd()
.build();
Run Code Online (Sandbox Code Playgroud)
这样,您的实际DateIterator可以是不可变的,而返回的构建器DateIterator.builder()可以使配置工作.