Breve descrizione della struttura del mio progetto.
Ho alcune classi base come BaseView
, BasePresenter
....
Anche il mio progetto è costituito da moduli, il modulo rappresenta una parte completa dell'applicazione.
Ogni modulo ha il proprio Presenter
, View
...
Ma anche ogni modulo ha il proprio Base<ModuleName>Presenter
..., in cui sono definiti i requisiti specifici del modulo.
All'inizio ho usato un file separato per tutte queste classi, ma poi ho trovato un altro approccio, che mi sembra interessante.
L'idea è creare Contract
class \ interface dove sono localizzate tutte le classi di base specifiche del modulo.
Ecco un esempio.
public interface StatisticsContract {
interface View extends BaseView<Presenter> {
void setProgressIndicator(boolean active);
void showStatistics(int numberOfIncompleteTasks, int numberOfCompletedTasks);
void showLoadingStatisticsError();
boolean isActive();
}
interface Presenter extends BasePresenter {
}
}
O
public interface ModesListContract {
static abstract class Presenter extends BasePresenter {
}
interface View extends BaseView {
}
}
Personalmente trovo questo utile raggruppare tutte le classi base in un posto e questo diventa una specie di modello - Contract
. So dove si trovano tutte le interfacce di base per il modulo specifico. Ho anche visto un simile approccio nel codice sorgente di Google Android.
D'altra parte, sembra una violazione di Single Responsibility Principle
e alcune altre pratiche conosciute.
Quindi non sono sicuro che sia corretto usare questo approccio o questa è una cattiva pratica che dovrebbe essere evitata.
Sarei grato per qualsiasi risposta.
Grazie