Attualmente sto scrivendo il mio PHP Framework (sì, un altro) per scopi di studio. In realtà cercherò di usarlo come tesi di laurea.
Dopo due tentativi falliti, ho finalmente trovato un modo per svilupparlo in un'architettura modulare, come Zend e Symfony.
Ho alcuni moduli liberamente accoppiati che possono funzionare separatamente l'uno dall'altro, ma la loro usabilità sarebbe meglio se li unissi insieme.
Ora mi sto chiedendo il modo migliore di integrarli. Non sono disposto a mettere un modulo come requisito per l'altro, perché questo rompe il design modulare.
La mia prima idea era quella di creare un modulo diverso che richiedesse gli altri due e li mettesse insieme a lavorare. Funzionerebbe bene quando ho solo due moduli, ma quando ho un modulo che può essere integrato con due o più moduli mi perdo.
Devo creare un modulo per ogni possibile integrazione? O dovrei creare solo un modulo e inserire tutte le integrazioni che potrei avere lì?
Sono chiaro? Altrimenti, proverò a spiegarlo meglio.
Modifica:
Un esempio pratico.
My Data Access Layer implementa il pattern Gateway riga tabella . Ho un TableGatewayInterface
e un'implementazione predefinita TableGateway
.
Immagina ora che voglio una tabella con una cache per le ultime interrogazioni. Posso raggiungerlo con il pattern Decorator , creando un CachedTableGateway
che dipende da TableGateway
e un componente cache, diciamo CacheInterface
.
Non ho bisogno della cache, ma potrebbe essere utile.
Dovrei incorporare questa implementazione decorata nel pacchetto originale, creando un requisito per il componente cache? O dovrei creare un "pacchetto di integrazione" che richiede sia il gateway di cache che di tabella?