Video: Cât de mare este Alphabet ??? 2024
Interposing en klasse som medierer mellom minnet objektet og databasen er en tilnærming for å gjøre ansvaret for å håndtere vedvarende objekter lettere for iOS apps. Dette mønsteret er kjent som Data Mapper. Figuren nedenfor viser samspillet mellom klasser i en enkel versjon av datapapperen.
I utgangspunktet er alle vedvarende operasjoner som får tilgang til databasen (det vil si opprette, hente, oppdatere og slette), ansvaret for datapapperen. Programmet gjør rett og slett de riktige forespørsler fra datapapperen.
Mønsteret Data Mapper er en abstraksjon som du kan håndtere vedvarende objekter når deres livsforvaltning er komplisert. Faktisk, med Data Mapper, objekter i minnet trenger ikke engang å vite at det er en database tilstede; de trenger ikke SQL eller noen kjennskap til databaseskjemaet.
Implementering av en god Data Mapper er komplisert. For eksempel antyder metodene i Active Record at en enkelt påkalling (for eksempel en søkemetode) resulterer i ett SQL-spørring. Dette er ikke alltid sant. Hvis du laster inn et objekt med flere innebygde objekter, kan det for eksempel være nødvendig å laste inn linjene også. Hvis objektene er komplekse, kan en søkeforespørsel laste inn en hel graf av objekter.
Mappers må kanskje håndtere klasser som blir til flere felt i flere tabeller, klasser med arv, og relaterte objekter når de hentes fra datalageret. Data-butikk kartlegging laget trenger å forstå hvilke objekter som har endret seg, hvilke nye som er blitt opprettet, og som har blitt ødelagt.
Hvis flere oppdateringer gjøres til de vedvarende oppføringene av et sett med objekter, må alle disse manipulasjonene finne sted i en transaksjon. Data Mapper-mønsteret lar ofte Active Record håndtere enkeltobjekter, mens Data Mapper tar seg av kompliserte krav, for eksempel arv, dyp gjenfinning og sammenkobling av objekter, spørringer basert på komplekse relasjoner, transaksjoner som omfatter et fungerende sett med objekter og så videre.
Data Mapper fungerer som et ekte objekt manager mens du delegerer objektnivåoperasjoner til Active Record. Dette gir en bedre OO-design overordnet fordi Mapper håndterer ansvarlig ansvarlig, mens Active Record håndterer objektets enkle utholdenhet (også sammenhengende). Også ledelsespolitikken er skilt fra persistensmekanismen. Derfor er ledelsespolitikken og persistensmekanismene løst koblet.
Endelig har Data Mapper-mønsteret (med noen variasjoner) blitt en sentral del av IOS med tilveiebringelse av Core Data-komponenten i IOS.