Dopo aver esaminato la tua altra domanda non credo che tu stia parlando della banda di quattro modello di builder . Penso che tu stia parlando del schema di costruzione di Josh Bloch .
Questo ti permette di scrivere un codice come questo:
NutritionFacts cocaCola = new NutritionFacts
.Builder(240, 8)
.calories(100)
.sodium(35)
.carbohydrate(27)
.build()
;
Il punto qui è di simulare parametri con nome in lingue che non li hanno in modo nativo. Ciò consente la creazione di un oggetto valore immutabile con molti campi senza dover ricorrere a setter o costruttori long illeggibili. Dal momento che la necessità di questo è altamente dipendente dalla lingua, non ha nulla a che fare con tutto ciò che riguarda Domain Driven Design. In tal caso, non è possibile utilizzare determinate lingue per DDD. Penso che DDD andrebbe bene fino a quando userai dei buoni nomi. Quindi no, non penso che il DDD proibisca l'uso dei costruttori.
Ricorda, fabbrica, costruttore o nuovo questo è il codice di costruzione. Non dovrebbe essere mescolato casualmente con il tuo codice comportamentale.
E ovviamente puoi usare le fabbriche con i costruttori per separare l'implementazione concreta dalla formula più astratta.
Nutrition secretFormula(Nutrition nutrition) {
return nutrition
.Builder(240, 8)
.calories(100)
.sodium(35)
.carbohydrate(27)
.build()
;
}
Nutrition dietFormula(Nutrition nutrition) {
return nutrition
.Builder(240, 8)
.calories(0)
.sodium(40)
.carbohydrate(0)
.build()
;
}
Penso che questo dimostri che il linguaggio ubiquitario può essere manifestato nei costruttori. Il tuo esperto di dominio dovrebbe essere in grado di leggerlo bene.