Sto creando un oggetto di trasferimento dati e non posso decidere se sarebbe meglio dare solo accesso pubblico alle variabili di istanza o se ci sarebbe uno scopo nell'usare getter e setter per accedere ai dati?
In base all'articolo Trasferimento dati Articolo Wikipedia:
A DTO does not have any behavior except for storage and retrieval of its own data (accessors and mutators). DTOs are simple objects that should not contain any business logic that would require testing.
Sembra che l'accesso pubblico sarebbe giustificato per le variabili di istanza di un DTO.
Ecco l'esempio su cui sto lavorando:
Ivars con modificatore di accesso pubblico:
class ServerContext
{
public String host;
public String user;
public String password;
public int port;
ServerContext(String host, String user, String password, int port) {
this.host = host;
this.user = user;
this.password = password;
this.port = port;
}
}
vs. Modificatori di accesso privati:
class ServerContext
{
private String host;
private String user;
private String password;
private int port;
ServerContext(String host, String user, String password, int port) {
setHost(host);
setUser(user);
setPassword(password);
setPort(port);
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
EDIT: potrebbero essere argomenti validi per mantenere privati i ivars:
-
Il potenziale di refactoring di un DTO in seguito per avere più funzionalità?
-
Volendo mantenere costante l'implementazione tra DTO e regolare oggetti?