Kuigi singletonidel on kasulik klassi ühe eksemplari tagamiseks, on mitmeid puudusi, mis võivad mõjutada rakenduste hooldatavust ja mastaapsust, sealhulgas ka neid, kes kasutavad MVVMcrossi. Siin on mõned võtmeküsimused:
1. Testitavuse probleemid **
Singletone on kurikuulsalt keeruline testida, kuna nad hoiavad olekut ja haldavad oma elutsüklit. See muudab keerukaks kirjutamiseks ühikutestide kirjutamise, mis ei suhtle tahtmatult võrgu või muude väliste süsteemidega. MVVMCROSS -is, kus testimine on vaatemudelite ja muude komponentide usaldusväärsuse tagamiseks ülioluline, võivad singletonid takistada võimalust üksikuid komponente tõhusalt isoleerida ja testida [1] [4].2. Andmete vastuolu ja mitmekeelsete probleemid **
Mitme keermega keskkonnas võivad singletonid põhjustada andmete ebajärjekindlust, kui seda pole korralikult sünkroonitud. See võib põhjustada deterministlikku käitumist, mis muudab probleemide silumise raskeks. Ehkki Singletons on võimalik niidina ohutu valmistada, lisab see keerukust ja seda ei tehta alati õigesti [2] [4].3. Varjatud sõltuvused ja sidumine **
Singletonid julgustavad varjatud sõltuvusi, pakkudes ressurssidele juurdepääsu globaalset punkti. See võib viia klasside vahel tiheda sidumiseni, kuna need kõik sõltuvad Singletoni konkreetsest rakendusest. MVVMCROSS -is, kus lahtine sidumine on puhta arhitektuuri säilitamiseks kasulik, saavad singletonid seda põhimõtet õõnestada, muutes komponentide muutmise või asendamise keeruliseks, mõjutamata kogu süsteemi [2] [3].4. kindlate põhimõtete rikkumine **
Singletons rikub mitut kindlat põhimõtet:- Ühe vastutuse põhimõte (SRP): Singletorid haldavad lisaks esmastele kohustustele sageli ka oma elutsüklit, mis võib põhjustada tarbetut keerukust.
-Sõltuvuse inversioonipõhimõte (DIP): Kõrgetasemelised moodulid ei tohiks sõltuda madala taseme detailidest, kuid singletonidega nad sageli teevad, kuna nad tuginevad Singletoni konkreetsest rakendamisest [2] [3].
5. mastaapsus ja paindlikkuse piirangud **
Singletonid võivad mastaapsust piirata, muutes selle muutuvate nõuetega kohanemise keeruliseks. Kui rakendus peab hakkama saama mitut ressursi eksemplari või muutma ressursside haldamist, võib singletonid muutuda kitsaskohaks. MVVMcrossis, kus paindlikkus on oluline erinevate platvormide ja konfiguratsioonide käsitlemiseks, saavad singletonid neid võimalusi piirata [7].6. Riigi juhtimise väljakutsed **
Singletonid kannavad rakenduse elu jooksul olekut, mis võib muuta oleku tõhusa lähtestamise või haldamise keeruliseks. See on eriti problemaatiline rakendustes, kus riiki tuleb sageli värskendada või ajakohastada [4].Singletonide alternatiivid
Nende puuduste vältimiseks pöörduvad arendajad sageli sõltuvuse süstimise poole kui paindlikuma ja hooldatavama alternatiivi. Sõltuvuse süstimine võimaldab komponente lõdvalt siduda ja hõlpsasti testida, pakkudes sõltuvusi konstruktorite või muude vahendite kaudu, selle asemel, et tugineda globaalsetele juhtumitele [1] [7]. MVVMcrossis võib sõltuvuse süstimise kasutamine aidata säilitada puhast, skaleeritavat arhitektuuri, mida on lihtsam testida ja hooldada.Tsitaadid:
]
[2] https://www.youtube.com/watch?v=x6gbdwfnin4
]
[4] https://mattemanferdini.com/swift-singleton/
]
[6] https://www.reddit.com/r/androiddev/comments/8v2wfa/are_singletons_a_bad_practice/
]
]