如何为可变对象使用工具Groovy构建器

问题描述 投票:0回答:1

我有一个可变对象,如下所示:

class CarsRequest {
  String name
  String models
  int engine

  def getRequestParams() {
    [
            name    : this.name,
            models  : this.models,
            engine  : this.engine,
    ]
  }
}

所以,我想知道为可变对象实现Groovy构建器的最佳方法是什么?

rest groovy builder
1个回答
0
投票

我已经建立了以下构建器。我的构造函数有问题。

@Override
public String toString() {
    return "CarsRequest: "+this.name+", "+this.models+", "+this.engine;
}

如果我不提供例如模型,则为空。

如何根据我的需要解决构造器构造的问题,即一旦我想提供名称和模型,而在其他时候提供名称和引擎?

我的示例:

public class CarsRequest {

    String name
    String models
    int engine

    private CarsRequest(CarsRequestBuilder builder) {
        this.name = builder.name;
        this.models = builder.models;
        this.engine = builder.engine;
    }

    String getName() {
        return name
    }

    String getModels() {
        return models
    }

    int getEngine() {
        return engine
    }

    @Override
    public String toString() {
        return "CarsRequest: "+this.name+", "+this.models+", "+this.engine;
    }

    public static class CarsRequestBuilder {

        private String name
        private String models
        private int engine

        public CarsRequestBuilder name(String name) {
            this.name = name;
            return this;
        }

        public CarsRequestBuilder models(String models) {
            this.models = models;
            return this;
        }

        public CarsRequestBuilder engine(int engine) {
            this.engine = engine;
            return this;
        }


        public CarsRequest build() {
            CarsRequest carsRequest =  new CarsRequest(this);
            validateCarsRequestObject(carsRequest);
            return carsRequest;
        }

        private void validateCarsRequestObject(CarsRequest carsRequest) {
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.