Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kokie yra „Singletons“ naudojimo trūkumai mvvmcross


Kokie yra „Singletons“ naudojimo trūkumai mvvmcross


Nors singletonai, naudingi užtikrinant vieną klasės egzempliorių, turi keletą trūkumų, kurie gali paveikti programų, įskaitant MVVMCross, palaikymą ir mastelį. Čia yra keletas pagrindinių klausimų:

1. Tikrinamumo problemos **

Singletonus labai sunku išbandyti, nes jie laikosi būsenos ir valdo savo gyvavimo ciklą. Dėl to sudėtinga rašyti vienetų testus, kurie netyčia sąveikauja su tinklu ar kitomis išorinėmis sistemomis. MVVMCROSS, kai bandymai yra labai svarbūs siekiant užtikrinti vaizdo modelių ir kitų komponentų patikimumą, singletonai gali kliudyti sugebėti efektyviai atskirti ir išbandyti atskirus komponentus [1] [4].

2. Duomenų nenuoseklumo ir daugialypės srities problemos **

Daugiapakopėje aplinkoje singletonai gali sukelti duomenų nenuoseklumą, jei jis nebus tinkamai sinchronizuotas. Tai gali lemti nereermininį elgesį, todėl sunku suderinti problemas. Nors įmanoma gaminti singletonus sriegį saugų, tai padidina sudėtingumą ir ne visada tai daroma teisingai [2] [4].

3. Paslėptos priklausomybės ir sukabinimas **

Singletonai skatina paslėptas priklausomybes teikdami visuotinį prieigos prie išteklių tašką. Tai gali sukelti griežtą klasių sujungimą, nes jos visi priklauso nuo Singletono konkretaus įgyvendinimo. MVVMCROSS, kai laisvas jungtis yra naudinga palaikyti švarią architektūrą, singletonai gali pakenkti šiam principui, todėl sunku pakeisti ar pakeisti komponentus, nepaveikdami visos sistemos [2] [3].

4. Solidų principų pažeidimas **

Singletonai pažeidžia kelis tvirtus principus:
- Vienintelis atsakomybės principas (SRP): Singletonai dažnai valdo savo gyvavimo ciklą, be savo pagrindinės pareigų, o tai gali sukelti nereikalingą sudėtingumą.
-Priklausomybės inversijos principas (DIP): Aukšto lygio moduliai neturėtų priklausyti nuo žemo lygio detalių, tačiau su singletonais jie dažnai daro, nes jie remiasi Singletono konkrečiu įgyvendinimu [2] [3].

5. Mastelio ir lankstumo apribojimai **

Singletonai gali apriboti mastelį, todėl sunku prisitaikyti prie besikeičiančių reikalavimų. Jei programai reikia tvarkyti kelis išteklių egzempliorius arba pakeisti išteklių valdymo, singletonai gali tapti kliūtimi. MVVMCross, kur lankstumas yra svarbus tvarkant įvairias platformas ir konfigūracijas, singletonai gali apriboti šias galimybes [7].

6. Valstybės valdymo iššūkiai **

Singletons turi būseną programos eksploatavimo laiką, dėl kurio gali būti sunku efektyviai iš naujo nustatyti ar valdyti būseną. Tai ypač problemiška programose, kai valstybę reikia dažnai atnaujinti ar atnaujinti [4].

alternatyvos singletonams

Norėdami išvengti šių trūkumų, kūrėjai dažnai kreipiasi į priklausomybės injekciją kaip lankstesnę ir palankesnę alternatyvą. Priklausomybės injekcija leidžia komponentams laisvai sujungti ir lengvai tikrinami teikiant priklausomybes konstruktoriais ar kitomis priemonėmis, o ne pasikliauti globaliais atvejais [1] [7]. „MVVMCross“ metu priklausomybės injekcija gali padėti išlaikyti švarią, keičiamą architektūrą, kurią lengviau išbandyti ir prižiūrėti.
Citatos:
[1] https://www.reddit.com/r/iosprogramming/comments/9zxqj1/why_i_cant_use_usingleton_why_it_is_bad_design/
[2] https://www.youtube.com/watch?v=x6gbdwfnin4
[3] https://www.davidtanzer.net/david's%20blog/2016/03/14/6-Reasons-why-yould-avoid-singletons.html
[4] https://matteomomanferdini.com/swift-singleton/
[5] https://forums.kodeco.com/t/why-i-cant-use-singleton-why-it-is-bad-design-pattern/56168
[6] https://www.reddit.com/r/androiddev/comments/8v2wfa/are_singletons_a_bad_practice/
[7] https://www.linkedin.com/advice/0/what-benefits-drawbacks-using-singleton-1E
[8] https://softwareEngineering.stackexchange.com/questions/40373/so-singletons-are-bad-then- What