gpt4 book ai didi

java配置/参数传递设计

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:49:15 26 4
gpt4 key购买 nike

我经常发现需要设计具有可配置功能的对象。

举例来说,假设我正在创建一个 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); 或基于属性的配置。

还有其他方法吗?您更喜欢哪种方法?

最佳答案

我会说 Builder 模式在这里很有意义:

DateIterator di = 
DateIterator.builder()
.withStartDate(new Date())
.withOpenEnd()
.build();

这样您的实际 DateIterator 就可以是不可变的,而由 DateIterator.builder() 返回的构建器执行配置工作。

关于java配置/参数传递设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com