Supponiamo che stiamo sviluppando un'applicazione con moduli (Vendite, Contabilità, Acquisti ecc.)
Un esempio qui è:
Il modulo Vendite è il modulo base / primario disponibile e il modulo Contabilità è un modulo complementare.
SalesModule
-. Product
E
AccountingModule
-. Account
-. Journal
Se dovessimo dirlo:
If the Accounting Module were installed, then it will provide a direct integration with the Product class from the Sales Module, such as : a Product now has a List of Account which if a transaction is applied to the Product, a Journal will be posted according to the Account.
Nella mia mente, immagino che Product
abbia una proprietà di List<Account>
, ma sarebbe impossibile senza aggiungere quella proprietà direttamente nella classe Product
, rendendo Product
ora dipendente dal Modulo di Contabilità quando SalesModule dovrebbe essere in grado di eseguirlo senza.
Un'altra soluzione che ci viene in mente è quella di aggiungere SalesIntegrations
classes (ProductAccount, ecc.) per integrare il Product
precedentemente descritto, rendendolo indipendente. Ma questa soluzione non sembra 'naturale' come dire che a Product has a list of Accounts
.
Da quanto ho capito, fare DDD significa conoscere in anticipo l'intero concetto di regole aziendali.
E se venisse richiesto un requisito per aggiungere un nuovo progetto che completasse il precedente progetto DDD, avendo solo la sua DLL (nessun accesso al codice sorgente)?