Я использую сервисы и генератор кода для управления интерфейсом к моей базе данных и выполнения запросов. Это действительно хорошо, мне нравится этот подход, но со многими запросами класс реализации очень длинный. Это мой интерфейс:
@ProxyGen
@VertxGen
public interface DatabaseService {
@GenIgnore
static DatabaseService create(MySQLPool dbClient, Handler<AsyncResult<DatabaseService>> readyHandler) {
return new DatabaseServiceImpl(dbClient, readyHandler);
}
@GenIgnore
static DatabaseService createProxy(Vertx vertx, String address) {
return new DatabaseServiceVertxEBProxy(vertx, address);
}
// ====== DESKTOP ====== //
@Fluent
DatabaseService listNonPreviste(Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addNonPreviste(String descr, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteNonPreviste(String id, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService editNonPreviste(String id, String value, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService checkDeleteNonPreviste(String id, Handler<AsyncResult<Integer>> handler);
@Fluent
DatabaseService listModifiche(String anno, String mese, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addModifiche(String operatore, String motivazione, String campo, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService listLavorazioni(Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addLavorazioni(String descr, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteLavorazioni(String id, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService editLavorazioni(String id, String value, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService checkDeleteLavorazioni(String id, Handler<AsyncResult<Integer>> handler);
@Fluent
DatabaseService listComponenti(Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addComponenti(String descr, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteComponenti(String id, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService editComponenti(String id, String value, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService checkDeleteComponenti(String id, Handler<AsyncResult<Integer>> handler);
@Fluent
DatabaseService listRelazioniComponenti(String id, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService listNonRelazioniComponenti(String id, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addRelazioniComponenti(String componente, String lavorazione, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteRelazioniComponenti(String componente, String lavorazione, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService listOperatori(Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addOperatori(String nome, String cognome, String ufficio, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteOperatori(String id, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService checkDeleteOperatori(String id, Handler<AsyncResult<Integer>> handler);
@Fluent
DatabaseService editOperatori(String id, String field, String value, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService listRelazioniOperatori(String id, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService listNonRelazioniOperatori(String id, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addRelazioniOperatori(String operatore, String componente, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteRelazioniOperatori(String operatore, String componente, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService totaleOreMeseOperatore(String id, String data, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService riassuntoGiornalieroOperatore(String id, String data, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService listCommesseAperte(Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService listCommesseChiuse(Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addCommessa(String codice, String descrizione, String matricola, String quantita, String conclusa, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteCommessa(String id, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService checkDeleteCommessa(String id, Handler<AsyncResult<Integer>> handler);
@Fluent
DatabaseService editCommessa(String id, String field, String value, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService riassuntoCommessaOre(String commessa, String ufficio, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService riassuntoCommessaLavorazioni(String commessa, String lavorazione, String ufficio, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService riassuntoCommessaComponenti(String commessa, String componente, String ufficio, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService commessaLavorazioniOre(String commessa, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService commessaComponentiOre(String commessa, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService listOre(String mese, String anno, String officina, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addOre(List<String> params, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService addOreConID(List<String> params, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteOre(String id, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService listOreNote(String id, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService listOreNonpreviste(String id, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService editNote(String testo, String id, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService editOreNonPreviste(String nonprevId, String oraId, Handler<AsyncResult<Boolean>> handler);
}
Класс DatabaseServiceImpl
реализует интерфейс и очень очень длинный. Есть ли способ «разделить» этот интерфейс? Или как-то иметь реализующий класс «меньший», потому что он становится очень большим.
Это все еще хорошо, потому что все логи базы данных c находятся в этих 2 файлах, поэтому логи БД c отделены от остальных, но классы становятся большими и их немного сложно поддерживать. Спасибо, я использую java 12
Я разделил интерфейс, например, следующим образом:
@Fluent
DatabaseService listNonPreviste(Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addNonPreviste(String descr, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService deleteNonPreviste(String id, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService editNonPreviste(String id, String value, Handler<AsyncResult<Boolean>> handler);
@Fluent
DatabaseService checkDeleteNonPreviste(String id, Handler<AsyncResult<Integer>> handler);
@Fluent
DatabaseService listModifiche(String anno, String mese, Handler<AsyncResult<JsonArray>> handler);
@Fluent
DatabaseService addModifiche(String operatore, String motivazione, String campo, Handler<AsyncResult<Boolean>> handler);
, потому что есть 2 логические единицы, называемые "Modifiche" и "Nonpreviste" ». Я хотел бы создать два класса Modifiche
и Nonpreviste
, которые реализуют только те методы, которые мне требуются.