Nella mia classe di servizio mi piacerebbe connettermi all'API esterna. Dove e come dovrei farlo?
1) Inietta nel costruttore ExternalClass e assegna a proprietà privata. Avanti in un'altra proprietà in connoter chiamata connect.
public MyClass(ExternalApi externalApi) {
this.externalApi = externalApi;
this.ExternalApiConnect externalApiConnect = externalApi.connect;
}
public void firstMethod() {
externalApiConnect.first();
}
public void secondMethod() {
externalApiConnect.second();
}
2) Costruttore esterno, quindi se creo dipendenze in DI, non chiamo connessione a servizio esterno.
private ExternalApiConnect externalApiConnect;
public MyClass(ExternalApi externalApi) {
this.externalApi = externalApi;
}
public void firstMethod() {
if (externalApiConnect == null) {
externalApiConnect = externalApi.getConnect();
}
externalApiConnect.first();
}
public void secondMethod() {
if (externalApiConnect == null) {
externalApiConnect = externalApi.getConnect();
}
externalApiConnect.second();
}
Ma ora ho due ripetizioni e ho lo stato nella mia classe di servizio. Non penso che lo stato dovrebbe essere in classe di servizio?
Qual è il modo migliore per questo?
Modifica:
3)
public MyClass(ExternalApi externalApi) {
this.externalApi = externalApi;
}
public void firstMethod() {
externalApi.getConnect().first();
}
public void secondMethod() {
externalApi.getConnect().second();
}