java - 具有 getter/setter 的构建器模式

标签 java design-patterns

我想按照 joshua bloch 所说的方式实现构建器模式,但我也在使用 jackson 的 objectMapper 将一个对象转换为另一个对象,它在内部使用 setter 方法设置值。

将两者都放在一个类(class)是好的做法吗?或者如果不是,我怎样才能实现两全其美?

最佳答案

我从未尝试过,但显然 jackson 2.x 支持构建器模式

http://wiki.fasterxml.com/JacksonFeatureBuilderPattern

@JsonDeserialize(builder=ValueBuilder.class)
public class Value {
  private final int x, y;
  protected Value(int x, int y) {
    this.x = x;
    this.y = y;
  }
}

public class ValueBuilder {
  private int x, y;

  // can use @JsonCreator to use non-default ctor, inject values etc
  public ValueBuilder() { }

  // if name is "withXxx", works as is: otherwise use @JsonProperty("x") or @JsonSetter("x")!
  public ValueBuilder withX(int x) {
    this.x = x;
    return this; // or, construct new instance, return that
  }
  public ValueBuilder withY(int y) {
    this.y = y;
    return this;
  }

  public Value build() {
    return new Value(x, y);
  }
}

关于java - 具有 getter/setter 的构建器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22875013/

相关文章:

design-patterns - 外观和业务委托(delegate)模式之间的区别

c++ - 内存管理模式

java - Hibernate 将不会更新具有可为空 OrderColumn 的表

java - 一副牌

java - Map Reduce代码用于计算下降率

wpf - MVVM - 与 WPF 命令绑定(bind)标准有关

java - 随着 Java8 接口(interface)中默认方法的出现,类适配器现在可以在 Java 中使用

java - Tomcat 8.017生成md5带digest.bat

java - 在基于促销的ci环境中,如何处理项目的jira版本和maven版本控制

php - 在 PHP 中可以使用多个迭代器吗?