Bonjour,

Je développe actuellement une sorte de bibliothèque pour accélérer la création de Web Services en me basant sur le framework Vert.x.

Un programme développé avec Vert.x est découpé en Verticle : ce sont des unités de traitement asynchrone dont le cycle est géré par le framework.

J'ai donc créer une série de classes de bases (abstraite) qui étendent les unes des autres pour ajouter des fonctionnalités.
Les fonctionnalités sont décrites par des interfaces :
- HttpVerticle : Ajoute des capacités de serveur HTTP au verticle
- WebVerticle : Ajoute des possibilités de routage Web au verticle
- WebSocketVerticle : Ajoute des possibilités de communication WebSocket au verticle
- JdbcVerticle : Ajoute des possibilités d'accès à une base de données asynchrones via Jdbc

Et les classes de bases implémentent ces interfaces

- BaseVerticle
- BaseHttpVerticle -> HttpVerticle
- BaseWebVerticle -> WebVerticle
- BaseWebSocketVerticle -> WebSocketVerticle
- BaseWebJdbcVerticle hérite de BaseWebVerticle, et implémente JdbcVerticle

Le problème c'est que pour combiner plusieurs fonctionnalités, l'héritage pose problème. J'ai pensé au pattern decorator mais je ne vois pas comment l'utiliser en combinaison des différents interfaces.

L'idée c'est que l'utilisateur hérite de la classe dont il a besoin, par exemple BaseWebJdbcVerticle pour faire du Web et requêter un SGBD.
Le problème c'est qu'en ajoutant des fonctionnalités via des interfaces, je suis obligé de pondre une classe pour chaque combinaison (WS et Jdbc, Web et Jdbc, ...)

Voici un diagramme de classe de cette bibliothèque : Nom : diagramme-classes.png
Affichages : 196
Taille : 15,9 Ko

Auriez-vous des conseils pour mieux architecturer cette bibliothèque ?

Merci d'avance