首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vertx服务接口重构

Vertx服务接口重构
EN

Stack Overflow用户
提问于 2020-02-25 08:34:40
回答 1查看 49关注 0票数 0

我正在使用服务和代码生成器来管理到我的数据库的接口和执行查询。它真的很好,我喜欢这种方法,但是对于很多查询,实现类非常长。这是我的界面:

代码语言:javascript
复制
@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。

例如,我将接口分割成这样:

代码语言:javascript
复制
  @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”。我想创建两个类ModificheNonpreviste,它们只实现我需要的方法。

EN

回答 1

Stack Overflow用户

发布于 2020-05-10 00:53:21

我不分割接口及其在类似情况下的实现,因为存储类型也可以改变,实现也是一样的,但是方法是相同的。简单地对命令进行实现。

代码语言:javascript
复制
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); 
 }
 ......
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60390428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档