我正在使用服务和代码生成器来管理到我的数据库的接口和执行查询。它真的很好,我喜欢这种方法,但是对于很多查询,实现类非常长。这是我的界面:
@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实现了接口,并且非常长。有没有办法“分割”这个界面?或者让实现类变得“更小”,因为它变得非常大。
它仍然很好,因为所有的数据库逻辑都在这两个文件中,所以DB逻辑与其他文件是分开的,但是类越来越大,维护起来有点困难。谢谢,我使用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);因为有两个逻辑单元,叫做"Modifiche“和"Nonpreviste”。我想创建两个类Modifiche和Nonpreviste,它们只实现我需要的方法。
发布于 2020-05-10 00:53:21
我不分割接口及其在类似情况下的实现,因为存储类型也可以改变,实现也是一样的,但是方法是相同的。简单地对命令进行实现。
DBImpls class {
NonPrevisteCommands nonPrevisteCommands;
ModificheComands modificheComands;
....
DBImpls() {
this.nonPrevisteCommands = new NonPrevisteCommands();
this.modificheComands = new ModificheComands();
......
}
DatabaseService listNonPreviste(Handler<AsyncResult<JsonArray>> handler){
return this.nonPrevisteCommands.listNonPreviste(handler);
}
DatabaseService addNonPreviste(String descr, Handler<AsyncResult<Boolean>> handler){
return this.nonPrevisteCommands.addNonPreviste(descr, handler);
}
.....
DatabaseService listModifiche(String anno, String mese, Handler<AsyncResult<JsonArray>> handler) {
return this.modificheCommands.listModifiche(descr, handler);
}
......
}https://stackoverflow.com/questions/60390428
复制相似问题