Om man kör Domain Driven Design tillåter ni factory-åtkomst från klienten eller går ni via repositoryn?
Åtkomst till factory via klienten?
9 svar · 562 visningar · startad av Lukaspojken
Det beror på lite, ett projekt har ett factory för att returnera rätt repository :)
IRepositoryFactory for the win!
Ok, jag kanske borde ha varit lite tydligare :) Jag syftade på olika former factories för domänentiteter. Vad gäller kring dessa?
Det gäller att du ska använda dom i de fall skapandet av entiteter är omständig och behöver mer logik än vad som kan förväntas finnas i ditt repository... enkelt sammanfattat. Personligen har jag inga problem med att exponera ett factory det beror på sammanhanget och projektet (storleken på domänen)
Syftet med en factory är det du säger, dvs att sköta bla komplex entitetsuppbyggnad. Men bör denna åtkomst enbart göras via repositories och inte från klienten eller bör man låta vem som helst komma åt entitetsfactories, dvs göra den publik? En nackdel som jag ser med publika entitetsfactorys är att man sprider ut relationer till den i klienten. Det är bra om det kan vara så lite beroenden som möjligt på klienten.
Om du menar just Factory för dina entiteter så exponerar jag sällan dom för klienten. Kan inte svara för andra men personligen tycker jag att det är logik som inte presentationslagerkodaren ska behöva bry sig om.
Det blir mycket lättare på presentationssidan om man slipper tänka på factories också.
Vänd på frågan istället. Finns det någon anledning att ha direkt åtkomst till factories och i sånt fall, vad är fördelarna och vilka konsekvenser kan det få?
-> Catz
Var använder du dina entitetsfactories?
-> Phorpher
Som jag ser det så är det bekvämt med publik åtkomst men jag vet inte om det är så himla bra egentligen. Detta eftersom man sprider ut beroendet. Har du något konkret kodexempel i något lager så kan vi resonera kring det.
Lukaspojken skrev:
-> Catz
Var använder du dina entitetsfactories?
Jag använder dom i mina repositories för att inte smutsa ner med kod som inte hör hemma där.
-> Catx
Men då är vi ganska överens tror jag :) Men har du dina repositories i samma projekt som dina entitetsfactories? Det jag vill är att dessa factories enbart kan nås inom assemblyn, dvs de ska inte vara publika.