2009-06-02 20 views
0

La génération d'URL dans mon application Web est en charge de la couche de présentation. Considérez maintenant un autre module envoyant des messages contenant des URL. (Pas nécessairement déclenché à partir de la présentation). Cependant, la couche de présentation doit connaître le module (puisque peut être être le déclencheur, et l'utilisateur peut configurer le module en utilisant le frontend).Le module backend a besoin d'URL depuis la couche de présentation - comment éviter la dépendance cyclique?

I.e. les modules sont dépendants les uns des autres ... des idées comment cette dépendance cyclique pourrait être évitée?

Le stockage d'URL dans ma base de données ne me semble pas normal, de même que la fusion des deux modules.

Toute aide ou inspiration est très appréciée. THX.

Répondre

0

N'utiliseriez-vous pas une aide d'interface ici? Que diriez-vous de spécifier et de "consommer" une interface UrlGenerator dans votre module dorsal et de l'implémenter dans votre couche de présentation?

En combinaison avec un mécanisme d'injection de dépendances (modèle d'usine pour la construction de clients UrlGenerator, frameworks tels que Spring ou Guice, modèle Service Locator), les dépendances de compilation cyclique sont rompues.

1

Créer un troisième module que les deux modules connaissent, mais ne se connaissent pas?

+0

hmmm peut-être Je ne comprends pas ce que vous soulignez, mais ... si A dépend de B et vice versa, et nous brancher C inbetween, nous avons deux références cycliques: A <-> C <-> B Si vous suggérez d'inclure la génération d'URL dans un troisième projet: Je ne pense pas que ce soit possible ... les classes de pages sont nécessaires pour le montage de l'URL, les URL sont nécessaires pour générer des liens sur les pages .... –

+1

Non, faites les dépendances A-> C et B-> C. –