Estou usando uma interface grande com cerca de 50 métodos para acessar um banco de dados. A interface foi escrita por um colega meu. Nós discutimos isso:
Eu: 50 métodos é demais. É um cheiro de código.
Colega: O que devo fazer sobre isso? Você quer o acesso ao banco de dados - você o possui.
Eu: Sim, mas não é claro e dificilmente sustentável no futuro.
Colega: OK, você está certo, não é legal. Como deve ser a interface então?
Eu: Que tal 5 métodos que retornam objetos com 10 métodos cada?
Mmmh, mas não seria o mesmo? Isso realmente leva a mais clareza? Vale a pena o esforço?
De vez em quando, estou em uma situação em que quero uma interface e a primeira coisa que vem à mente é uma grande interface. Existe um padrão geral de design para isso?
Atualização (respondendo ao comentário de SJuan):
O "tipo de métodos": é uma interface para buscar dados de um banco de dados. Todos os métodos têm o formato (pseudocódigo)
List<Typename> createTablenameList()
Métodos e tabelas não estão exatamente em uma relação 1-1, a ênfase está mais no fato de que você sempre obtém algum tipo de lista que vem de um banco de dados.
List<WeatherDataRecord> createWeatherDataTable() {db.open(); return db.select("*", "tbl_weatherData");}
UserDao
e umaCustomerDao
e umaProductDao
)