Value Object design pattern

Pozdrav, evo i mene s jednim pitanjem,

u zadnje vrijeme sam si uzeo za zadatak da dobro proučim sve moguće design patterne u PHP-u prije svega iz znatiželje, a nakon toga da bih u budućnosti imao i neke koristi od njih. Ali zapeo sam na jednom od njih.

Radi se o Value Object patternu, pa bih molio da mi netko na jednostavnom hrvatskom jeziku objasni njihov princip korištenja i gdje bi oni mogli biti od koristi.

Naime radi se o tome da nikako ne uviđam njihovu iskoristivost u bilo kojem pogledu, ali ne zato što je to neiskoristivo nego jednostavno zbog nerazumijevanja principa iste.

Eto unaprijed hvala.

P.S. Nadam se da ovdje ima ljudi koji će mi to moći objasniti i pokazati to na nekom konkrektnom, a ne kako to uvijek biva abstraktnom primjeru.

Implementacijom tog uzorka ti sprečavaš vanjske izmjene na objektu koji si spremio unutar nekog drugog.

Recimo imaš sljedeće klase

Baza

Klasa koja vraća jedan red iz rezultata tako da koristi već postojeći objekt, samo ga ponovo iskoristi.

Rezultat

Obična klasa koja se koristi za spremanje jednog reda

Container

Neki container

E sada recimo da u bazi iz koje vučeš podatke imaš samo polje ime i vrijednosti su “Marijan”, “Luka”, “Ivana”, “Goran”.

Ako sada izvedeš sljedeći dio koda

budeš kao ispis dobio Marijan Luka Ivana Goran što je ok.

Ali recimo da izvedeš sljedeći dio koda

i da napraviš dump varijable $instancaContainera budeš vidio da svaki zapis unutar containera ima isto ime i to “Goran”. Naravno to nije nešto što želiš i tu nastupa tvoj uzorak.

Promjenom funkcije

u nešto tipa

i napraviš dump varijable budeš dobio zapise kako si ih vadio iz baze.

To ti recimo u PHP4 nije trebalo jer je PHP stalno kopirao objekte, no u PHP5 ne.

P.S. Ovako sam ga ja shvatio i na sličan način ga implementiram u svojim klasama :slight_smile:

Hm, totalno nejasno još uvijek, ali hvala na pokušaju. Da li mi možeš reći gdje je i što je u tvojem kodu Value Object?

Ovo mi sve skupa baca malo drugačije svijetlo na sve to jer ja sam to razumio i protumačio na totalno drugačiji način.

Ovaj tu dio

Kao što i sam naziv kaže, tebi je bitna vrijednost, ne objekt. Ovaj uzorak je suprotno od Singleton uzorka, jer tamo ti je bitan objekt kao objekt i želiš da se sve izmjene odvijaju samo na jednom.

Ovdje želiš suprotno, želiš da se izmjena na objektu koji je dodan ne dogodi jer se u vanjskom kodu već dogodila. Znači zanimaju te samo vrijednosti objekta (Value Object).

Rješenje je napravit novi Objekt koji nema nikakve veze sa početnim, te mu samo preslikat vrijednosti.

[quote=“zlikavac32”]Ovaj tu dio

Kao što i sam naziv kaže, tebi je bitna vrijednost, ne objekt. Ovaj uzorak je suprotno od Singleton uzorka, jer tamo ti je bitan objekt kao objekt i želiš da se sve izmjene odvijaju samo na jednom.

Ovdje želiš suprotno, želiš da se izmjena na objektu koji je dodan ne dogodi jer se u vanjskom kodu već dogodila. Znači zanimaju te samo vrijednosti objekta (Value Object).

Rješenje je napravit novi Objekt koji nema nikakve veze sa početnim, te mu samo preslikat vrijednosti.[/quote]

Ok postaje jasnije, stoga ti dajem reputation point.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja