Ho un bel po 'di codice Java che sto rielaborando per essere riutilizzato. Il problema è che ci sono molti pezzi che sono specifici del progetto, quindi c'è un alto livello di accoppiamento tra il progetto dell'applicazione e il progetto del codice base.
Confronta le seguenti situazioni in cui utilizziamo una classe che implementa l'uso di metodi astratti per estrarre le risorse dalla classe figlio e una in cui dichiariamo semplicemente le variabili di istanza.
Metodi astratti:
public abstract class SuperBaseClass {
public abstract int getNumberOne();
public abstract String getStringOne();
public abstract String getStringTwo();
public printStuff() {
Log.i("IntAndTwoStrings", String.format("%i %s and %s",
getNumberOne(), getStringOne(), getStringTwo()));
}
}
public class ReusedAppClass extends SuperBaseClass {
public int getNumberOne() {
return 1;
}
public String getStringOne() {
return "String1";
}
public String getStringTwo() {
return "String2";
}
public ReusedAppClass() {
printStuff();
}
}
Variabili di istanza:
public class SuperBaseClass {
protected int numberOne;
protected String stringOne;
protected String stringTwo;
public printStuff() {
//Possibly throw RuntimeExceptions if the app didnt set these
Log.i("IntAndTwoStrings", String.format("%i %s and %s",
numberOne, stringOne, stringTwo));
}
}
public class ReusedAppClass extends SuperBaseClass {
public ReusedAppClass() {
numberOne = 1;
stringOne = "String1";
stringTwo = "String2";
printStuff();
}
}
C'è un compromesso? La situazione del metodo astratto è eccessiva, o è per questo che sono state create le classi astratte?