相关疑难解决方法(0)

使用带有"旧"对象引用的Builder模式创建新对象

我正在使用Builder模式并且遇到如何向新创建的对象添加新的"属性":

public class MsProjectTaskData {
  private boolean isAlreadyTransfered;
  private String req;    

   public static class Builder {    
    private boolean isAlreadyTransfered = false;

    public Builder withTransfered(boolean val) {
        isAlreadyTransfered = val; 
        return this;
    }    
    public MsProjectTaskData build() {
        return new MsProjectTaskData(this);
    }
   }

   private MsProjectTaskData(Builder builder) {
     isAlreadyTransfered = builder.isAlreadyTransfered;
   }

  public MsProjectTaskData(String req) {
    this.req = req;
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用Builder创建一个新对象:

MsProjectTaskData data = new MsProjectTaskData.Builder().withTransfered(true).build();
Run Code Online (Sandbox Code Playgroud)

但是使用这种方法,req新创建的对象中的字符串会丢失(当然).

是否有可能使用新的set isAlreadyTransfered变量和"旧"对象中的"旧" 字符串创建新对象?req

也许我必须将旧的对象引用传递给Builder,但我不知道如何做到这一点.也许使用Builder模式对这种方法不是很有用吗?

编辑:(在Eugene发表评论后)

想想,我明白了:

public …
Run Code Online (Sandbox Code Playgroud)

java design-patterns builder

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

builder ×1

design-patterns ×1

java ×1