Maris-S Posted May 21, 2013 Report Share Posted May 21, 2013 (edited) Sveiki! Pameklēju pa internetu dažādas atsauksmes un diskusijas par Singleton modeli. No vienas puses tas ir ērts, bet no otras puses ir negatīvas atsauksmes. Piemēram šajā diskusijā: http://stackoverflow.com/questions/4595964/who-needs-singletons lielākā piekrišana ir tieši viedoklim, ka Singleton labāk neizmantot (atbilde no Gordon). Tā nav vienīgā diskusija kur tiek izcelti Singleton trūkumi, īpaši uz php un bieži vien tādiem komentāriem ir diezgan liels atbalsts, kas liek secināt ka daudziem programmētājiem viņš nepatīk. Gribēju pajautāt ko Jūs domājat par Singleton un vai bieži izmantojat? Codez, zinu ka Tu izmanto viņus, vai ir sanākušas kādas problēmas darbojoties ar Singleton modeli? Paldies! Edited May 21, 2013 by Maris-S Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 21, 2013 Report Share Posted May 21, 2013 Personīgi, neizmantoju. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted May 21, 2013 Report Share Posted May 21, 2013 Kad vajag, lieto. Kad nevajag, nelieto. Tik vienkārši. Quote Link to comment Share on other sites More sharing options...
codez Posted May 21, 2013 Report Share Posted May 21, 2013 PHP singletonus izmanotoju un nekādu problēmu nebija, bet es tikpat kā nerakstīju testus savām aplikācijām, kur varētu parādīties galvenais singletonu trūkums, jo pēkšņi dotā singletona vietā vajadzīgs kaut kāds pseido-obejkts, kurš simulē kaut kādu darbību. Lai gan arī to var mierīgi atrisināt. Manuprāt, PHP ir tik daudz globālu stāvokļu jau iebūvēti pamatā (visi $_SERVER, $_POST, $_COOKIE, ..., ), ka pieliekot ērtibai dažus pašam, nekas principiāli nemainīsies. Tagad scalā varu atļauties neizmantot singletonus, jo tur var uztaisīt dependancy injection automātiski ar implicit parametriem, pāšā kodā nepadodot parametrus, gala api lietotāja kods sanāk tikpat vienkāršs, bet bez globāliem stāvokļiem un tā kā Play FW ir vienkārsi brīnišķīga testēšana, tad iespējams, ka sākšu to izmantot. Bet par testu lietderību ir atsevišķa diskusija. Quote Link to comment Share on other sites More sharing options...
Simpsons Posted May 21, 2013 Report Share Posted May 21, 2013 Kāda jēga apspriest, vai lietot vai nelietot vienu no populārākajiem koda dizaina paraugiem (design patterns). Ja vajag un tas ir labākais acīmredzamais risinājums, droši lieto. Ja nezini par "design patterns", tad izlasi grāmatu - silti iesaku, lai izprastu to "štelli", kāpēc tas vispār vajadzīgs... Katrs dizaina paraugs ir paredzēts kaut kādiem noteiktiem tipveida gadījumiem, kas bieži mēdz atkārtoties. Quote Link to comment Share on other sites More sharing options...
Maris-S Posted May 21, 2013 Author Report Share Posted May 21, 2013 (edited) Simpsons, Tu laikam manis sarakstīto izlasīji neuzmanīgi. :) Domāju diskusiju pēc manis norādītās saites arī neizpētīji. Pie tam populārākais nenozīmē labākais. Es arī nejautāju par popularitāti. Kam Singletons domāts es arī labi zinu un arī lasījis par to esmu. Kā jau teicu vairāk iet runa par kvalitāti un vai ir vērts viņu izmantot. Saitē norādītajā diskusijā var redzēt, ka programmētāju vidū tādas izteikti labas atzinības Singletonam nav un tur ir arī savi pamatojumi tam. Par to arī iet runa, nevis par to, kas tas ir un cik viņš ir populārs. Jebkurā gadījumā paldies par atbildēm. Ērts tas Singleton ir, bet būs laikam pagaidām jāatturas no viņa. Jāpiekrīt arī Codez, ka php varētu izmantot dažus globālos mainīgos, jo tā pat daži jau tur ir. Edited May 21, 2013 by Maris-S Quote Link to comment Share on other sites More sharing options...
codez Posted May 21, 2013 Report Share Posted May 21, 2013 Ja vajag un tas ir labākais acīmredzamais risinājums, droši lieto.Ne vienmēr uz priekšu var droši zināt, ko vajadzēs un ko nē. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted May 21, 2013 Report Share Posted May 21, 2013 Viņš jau teica "labākais acīmredzamais", kas nebūt nav patiešām labākais. Quote Link to comment Share on other sites More sharing options...
Simpsons Posted May 21, 2013 Report Share Posted May 21, 2013 Nu, kas prot nākotni zīlēt, uz priekšu. :) Ja es taisu programmu, man jātaisa tā, lai tas apmierinātu esošās vajadzības plus pēc iespējas izsargātos no iespējamām nākotnes problēmām, CIK NU tās iespējams paredzēt... Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted June 13, 2013 Report Share Posted June 13, 2013 (edited) Singletons ļauj pieturēties pie OOP paradigmas dažās sarežģītās situācijās, kā, piemēram, gadījumā ar DB savienojumu vai aktīvo sesiju. Ir principiāla atšķirība starp Database::singleton() vai $GLOBALS['db']. Edited June 13, 2013 by Mr.Key Quote Link to comment Share on other sites More sharing options...
Kavacky Posted June 14, 2013 Report Share Posted June 14, 2013 Nemuldi tukšu, _principiālas_ atšķirības nav. Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted June 14, 2013 Report Share Posted June 14, 2013 Skatoties no kuras puses. No tā, ka "viss strādā", atšķirības tiešām nav. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted June 17, 2013 Report Share Posted June 17, 2013 Kāda ir principiālā atšķirība starp vienu globālo mainīgo un otru globālo mainīgo? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted June 17, 2013 Report Share Posted June 17, 2013 (edited) Nu singltons ir moderns veids kā izveidot kkādu globālu mainīgo. Tāpat kā kallbeks ir moderns goto. /no HackerNews/ Edited June 17, 2013 by daGrevis Quote Link to comment Share on other sites More sharing options...
jurchiks Posted June 18, 2013 Report Share Posted June 18, 2013 (edited) Man kaut kā liekās, ka singletons nav globāls variablis, singleton klase ir globāli pieejama (ja ir autoloaderis vai sakarīga struktūra), bet ne pats variablis, tas ir privāts klasei. Par to callback = goto gan nepiekritīšu, callback var returnot datus, goto nevar, un parasti ar goto neatgriežas atpakaļ. Edited June 18, 2013 by jurchiks Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.