Good or Bad - use the constructor to initialize the model from a remote web service

I would like to know whether it is good or bad to initialize my model by requesting web services or is it better to use another public method that is called after the constructor

For instance:

class Model {
    ModelData data;

    Model(Integer model_id) {
       data = Request.getDataFromWebServices(model_id);
    }
}
+5
source share
6 answers

, aproach args , ( ).
, model_id Model, , .
model_id .
, Model , . - .
api , Model, IMHO , .
, - .

+5

- , . request , API :

class Model {
  final ModelData data;

  Model(Request request, int model_id) {
    data = request.getDataFromWebServices(model_id);
  }
}

factory:

class Model {
  static Model createModelFromWebServices(Request request, int model_id) {
    return new Model(request.getDataFromWebServices(model_id));
  }

  final ModelData data;

  Model(ModelData data) {
    this.data = data;
  }
}

int Integer, , null model_id.

+4

, .

, , , "CreateModelFromService", - , , , , - .. , , .

$0.02

0

. , , .

0

. , , - , , , . , .

0

, unit test -, . -?

, factory -. :

class Model {
    Model(ModelData data) { ... }
}

class ModelFactory {
    private Request request;

    Model create(Integer modelId) { 
        return new Model(request.getDataFromWebServices(modelId));
    }    
}
0

All Articles