Tutustu Applen käyttämiin iOS-malleihin

Suunnittelumallit ovat tärkeä osa ohjelmistojen suunnittelua, ne tarjoavat ratkaisun yleisesti esiintyviin ongelmiin.
Apple käyttää näitä kuvioita kaikissa iOS-kehyksissä. Tässä artikkelissa keskustelemme siitä, kuinka suunnittelumallit käytetään sisäisissä Apple-sovellusliittymissä ja kuinka voit hyötyä näistä toteutuksista.

Käytämme päivittäisessä kehityksessämme iOS-kehyksiä, kuten UIKit CoreLocation CoreBluetooth ja monia muita. Komponentit, kuten UITableView UIStackView, kaikki on kirjoitettu käyttämällä upeaa, uudelleenkäytettävää suunnittelua omenasta.

On olemassa monia suunnittelumalleja, joita omena käytti koko sarjojensa kehittämisessä. Yrittäkäämme tutkia joitain näistä malleista ja nähdä kuinka voimme toteuttaa ne.

Kohde-allas

Object Pool on malli, joka käyttää uudelleen joukko alustettuja objekteja.

Kun poolin asiakas pyytää objektia, pool palauttaa todellisen alkion, joka on valmis käytettäväksi uudelleen sen sijaan, että luodaan uutta ilmentymää. Kun asiakas on lopettanut objektin käytön, se palauttaa objektin pooliin, jotta sitä voidaan käyttää uudelleen myöhemmin.

Objektivarastoja käytetään suoritukseen, koska poolista saatuja ja siihen palautettuja esineitä ei tosiasiassa luoda tai tuhota tällä hetkellä. Siksi säästät paljon suorituskykyä.

UITableView voi tarjota meille hienon tavan ymmärtää objektialuekuvion käyttöä ja toteutusta.

UITableView toimii siten, että se vie näytön ulkopuolelle työnnetyt solut ja käyttää niitä sitten tulevia soluja varten.

Object Poolin nopea toteutus

Yrittäkäämme tarjota objektivarannototeutus iOS: lle.

Ensinnäkin meidän on luotava protokolla, jota voimme käyttää rajoittamaan yleisiä poolikohteitamme. Koska aiomme tarjota uudelleenkäytettäviä soluja taulukonäkymään, nimeäkäämme se uudelleenkäytettäväksi

Voimme lisätä prepaForReuse-protokollan ja kutsua sitä, kun elementti käytetään uudelleen altaasta tarvittavan puhdistuksen aikaansaamiseksi objektille ennen kuin se tulee uudelleen näyttöön.

UITableViewCell olisi silloin yksinkertaisesti UIView, joka vastaa uudelleenkäytettävyyttä

Aloitetaan seuraavasta yhdistämisestä vastaavan objektimme toteuttaminen seuraavasti:

Object Pool Class -sarjamme tarvitsee tehdastoiminnon, joka osaa luoda uuden geneerisen tuotteen.

Tarvitsemme maxElementCount-muuttujaa, jota taulukonäkymässä käytetään tarjoamaan enimmäismäärä soluja, jotka näytetään ruudulla samanaikaisesti. Koska iOS: llä on jo valtuutettu osan kohteiden lukumäärä osassa yhdessä korkeusForRowInSectionin kanssa, tämän arvon tarjoaminen on helppoa.

Tarvitsemme Object Poolissa kaksi tapaa, joista toinen on piirtää esine ja toinen vapauttaa uudelleen käytettäväksi tarkoitetun objektin. Taulukonäkymän esimerkissä vapauttaisimme solukohteen, kun solu menisi näytön ulkopuolelle.

Käytämme yksinkertaista taulukkoa, joka pitää tällä hetkellä vapautetut elementit ja joko käytä niitä uudelleen, kun niitä on saatavana, tai luo uusia tehdastoiminnolla.

Kun dequeueReusableCell-toiminto sai nimensä ,UITableView piirtää objektin vain poolistaan.

Koska UITableView on yksinkertaisesti UIScrollView-alaluokka, voimme helposti tietää, milloin solu on näytön ulkopuolella, joten voimme yksinkertaisesti vapauttaa solukohteen uudelleenkäytettävään pooliin.

Alla on toiminto, jota kutsutaan, kun solu menee näytön ulkopuolelle.

Singleton-malli

Singleton-malli on malli, jota käytetään vain yhden instanssin luomiseen tietystä objektista. Kaikki muut viitteet objektiin viittaavat samaan taustalla olevaan ilmentymään. Singletoneita käytetään, kun on aiheellista, että yksi objekti tarjoaa pääsyn globaaliin resurssiin.

Yksittäisobjekti voidaan yksinkertaisesti luoda nopeasti kuten seuraa

Singletonin nopea toteutus

Apple käyttää yksittäisiä kappaleita monissa tapauksissa joissain niistä onNSFileManager, NSApplication ja inUIApplication.

Kun asiakas kysyy esineeltä ilmentymää, se saa jaetun ilmentymän. Tämä objekti luodaan laiskasti ensimmäisestä pyynnöstä.

Voimme käyttää Singletons-koodia koodissamme välttääksemme osoittaa useiden esiintymien uudelleenosoittamista, mikä säästää suorituskykyä. Meidän on kuitenkin oltava tietoisia siitä, että singletonit voivat joissain tapauksissa aiheuttaa ongelmia, ja niitä tulisi käyttää varovasti eikä niitä saa käyttää liikaa.

  • Käytä Singleton-luokkia tilanteissa, joissa yksittäiselle objektille on järkevää tarjota pääsy globaaliin resurssiin.
  • Älä unohda, että Singleton-luokkia ei voida luokitella alaluokkaan.
  • Singletonit voivat piilottaa riippuvuudet, yleensä meidän tulisi pyrkiä ohjelmistoarkkitehtuuriin, jolla on minimaaliset riippuvuudet luokkien välillä.

Tarkkailijakuvio

Tarkkailijakuviota käytetään objektitilan muutosten julkaisemiseen. Muut kohteet voivat tilata ja saada ilmoituksen muutoksista.

Objektien välinen vuorovaikutus voi tapahtua ilman, että heidän tarvitsee tietää toisistaan, tämä tekee kohteen ja tarkkailijoiden löysästi toisiinsa.

Kuinka Apple käyttää tarkkailijakuviota?

ilmoitukset

Apple käyttää tarkkailijakuviota NSNotificationCenter-objekteissa. Lähettää ilmoitukset NSNotificationCenterille tunnistamalla ilmoituksen globaalilla merkkijonolla. Observer Object voi kuunnella tätä ilmoitusta ja saada objektimuutokset. Ilmoituksen lähettäminen tapahtuu synkronisesti.

Voimme käyttää koodia inNSNotificationCenter tilaamalla järjestelmäilmoituksia tai julkaisemaan ja tilaamaan mukautettuja ilmoituksia.

NSNotificationCenter on todella mukava, mutta yritämme kirjoittaa mukautetun toteutuksen tarkkailijakuviolle Swiftissä, jotta meillä olisi syvällisempi käsitys tästä kuviosta.

Tarkkailijakuvion nopea toteutus

Käyttö

Tiivistettynä

Apple käyttää suunnittelumallien korkeaa käyttöä iOS: ssä kaikissa niiden sovellusliittymissä. Tässä artikkelissa olemme selvittäneet, kuinka he toteuttivat nämä mallit, ja toimitimme käyttöönoton nopeasti Object Pool-, Singleton- ja Observer-kuvioiden avulla.

Suunnittelumallien ymmärtäminen on todella tärkeää jokaiselle kehittäjälle, joka etsii puhdasta koodia ja arkkitehtuuria. Jos haluat tietää enemmän suunnittelumallista ja siitä, kuinka ne voidaan helposti toteuttaa iOS: ssä, tarkista tämä artikkeli, joka yksinkertaistaa niiden käyttöönottoa Swiftissä.

Toivon, että nautit tästä viestistä, ja siitä tulee hyötyä koodikantasi.

Varmista, että taputat ja jaa se näyttääksesi tukeasi.

Jos sinulla on kysyttävää tai kommentteja, jätä muistiinpano tähän tai lähetä meille sähköpostia osoitteeseen arlindaliu.dev@gmail.com.