compusa skrev:
Är det detta du är skeptiskt till?
Både ja och nej. Det är bra att det inte är ditt objekt i sig själv som sköter updateringen utan du har lagt ut det i någon annanstans, att du sedan wrappar det i ditt objekt är väl okej, även om jag inte tycker det behövs eller är snyggt.
Det är inte bra att du har specifika funktioner för att skapa och spara varje objekt.
dao.getCustomerDAO();
border vara:
dao.GetAnyObjectDAO();
På detta sätt får du mindre (men mer komplex) kod. Nu är det egentligen inget problem då de flesta av dessa DAOFactorys oftas genererars från något program, men om man vill gå in och ändra något generellt för alla klasser så måste man gå in i alla GetObjectDAO() metoder och ändra i dessa istället för att bara ändra i GetAnyObjectDAO().
lilly skrev:
För manager är väl samma sak som CustomerRepository i ovanstående länk?
Japp och och Patrik pratar om samma sak, med olika namn bara, och det är näste samma sak som Compusa pratar om, Compusa har dock spcifika Factory-klasser för varje typ av objekt som skall skapas, jag och Partik pratar om en generell factoryklass.
lilly skrev:
Vet ni om det finns någonstans någon bra exempelkod på detta?
Exempelkod för Managerklassen eller hur du använder den för att hanterar dina objekt?
nickemannen skrev:
Hmm, jag hade nog kört en singleton på den såkallade Manager-klassen sedan låtit den anropat en factory isåfall för att skapa objektet.
Manager klassen är Factoryklassen, bara ett annant namn på den. Det är dock ingen specifik factoryklass för en specifik type av objekt, utan en generell factoryklass som kan skapa alla olika typer av objekt som jag vill....
nickemannen skrev:
Sedan att managerklassen har alla objekt den sparat i en lista av något slag så att den inte behöver skapa om objektet om ett objekt med samma Id efterfrågas igen.
Ahhh... caching, visst skall man bygga in caching i sin managerklasser.
Men man skall använda det med suntförnuft, eftersom det kan vara så att andra program kan gå ner och ändra i databasen för ett objekt som du har i din cache, och när du då inte hämtar upp det igen från databasen utan hämtar det från din cache, så har du inte ett korrekt data objekt, eftersom datan i databasen inte stämmer överens med den data som du har i din cache... Samt att du måste hantera möjligheten att ta bort dess objekt när minnet börjar ta slut, för du vill ju inte att din applikation skall dö bara för att du fyllt din cache med en massa objekt som du inte använder :)
Så cache är bra när man vet hur och när man skall använda det...
- M