Ero sivun ”Singleton” versioiden välillä
[katsottu versio] | [arvioimaton versio] |
Pelastettu 1 lähde(ttä) ja merkitty 0 kuolleeksi.) #IABot (v2.0.8.8 |
p Alatyypit ja kritiikki |
||
Rivi 9: | Rivi 9: | ||
Mallin toteus riippuu käytetystä ohjelmointikielestä. Eräs [[C++]]:ssa käytetty tapa on toteuttaa Singleton-luokka [[C++#Template-mallit|template-mallin]] avulla.<ref>{{Verkkoviite | osoite = http://cc.byexamples.com/2008/06/09/stl-singleton-template/ | nimeke = STL Singleton Template | ajankohta = 9.6.2008 | viitattu = 26.3.2018 | arkisto = https://web.archive.org/web/20180326202623/http://cc.byexamples.com/2008/06/09/stl-singleton-template/ | arkistoitu = 26.3.2018 }}</ref> |
Mallin toteus riippuu käytetystä ohjelmointikielestä. Eräs [[C++]]:ssa käytetty tapa on toteuttaa Singleton-luokka [[C++#Template-mallit|template-mallin]] avulla.<ref>{{Verkkoviite | osoite = http://cc.byexamples.com/2008/06/09/stl-singleton-template/ | nimeke = STL Singleton Template | ajankohta = 9.6.2008 | viitattu = 26.3.2018 | arkisto = https://web.archive.org/web/20180326202623/http://cc.byexamples.com/2008/06/09/stl-singleton-template/ | arkistoitu = 26.3.2018 }}</ref> |
||
== Alatyypit == |
|||
=== Laiska esiintymä (Lazy Instantiation) === |
|||
Luo esiintymän, vasta kun sitä tarvitaan ohjelmassa. Tavallisin singletonin esiintymä. <ref>{{Kirjaviite|Tekijä=Krzysztof Stencel, Patrycja Węgrzynowicz|Nimeke=Implementation Variants of the Singleton Design Pattern|Vuosi=2008|Sivut=396–406|Julkaisupaikka=Berlin, Heidelberg|Julkaisija=Springer Berlin Heidelberg|Isbn=978-3-540-88874-1, 978-3-540-88875-8|www=http://link.springer.com/10.1007/978-3-540-88875-8_61|Viitattu=2023-03-21}}</ref> Aiheuttaa ongelmia monisäikeisissä (multi-threaded) järjestelmissä, koska jokainen säie saa oman instanssin. Tämä vältetään käyttämällä eri singletonin alatyyppiä.<ref>{{Verkkoviite|osoite=https://www.digitalocean.com/community/tutorials/java-singleton-design-pattern-best-practices-examples|nimeke=Java Singleton Design Pattern Best Practices with Examples {{!}} DigitalOcean|julkaisu=www.digitalocean.com|viitattu=2023-03-21|ietf-kielikoodi=en}}</ref> |
|||
== Kritiikki == |
|||
Kriitikot eivät pidä singletonia suunnittelumallina, vaan ns. epäsuunnittelumallina. Syitä tähän on arveltu olevan mallin yksinkertaisuus ja väärinkäyttö osaamattomissa käsissä.<ref>{{Verkkoviite|osoite=https://www.contentful.com/blog/singleton-pattern-evil-or-misused/|nimeke=The singleton pattern: evil or just misused?|julkaisu=Contentful|viitattu=2023-03-21|ietf-kielikoodi=en}}</ref> |
|||
== Lähteet == |
== Lähteet == |
Versio 21. maaliskuuta 2023 kello 19.23
Singleton (ainokainen) on ohjelmistotekniikassa käytetty suunnittelumalli, jolla varmistetaan että luokasta tehdyllä oliolla on vain yksi instanssi, ja tarjoaa globaalin (ohjelman laajuisen) pääsyn siihen.
Singleton-mallilla olevia etuja ovat muun muassa:
- hallittu pääsy tietoon (kapselointi)
- rajattu nimiavaruus ja näkyvyys (engl. scope) verrattuna globaaleihin muuttujiin
Mallin toteus riippuu käytetystä ohjelmointikielestä. Eräs C++:ssa käytetty tapa on toteuttaa Singleton-luokka template-mallin avulla.[1]
Alatyypit
Laiska esiintymä (Lazy Instantiation)
Luo esiintymän, vasta kun sitä tarvitaan ohjelmassa. Tavallisin singletonin esiintymä. [2] Aiheuttaa ongelmia monisäikeisissä (multi-threaded) järjestelmissä, koska jokainen säie saa oman instanssin. Tämä vältetään käyttämällä eri singletonin alatyyppiä.[3]
Kritiikki
Kriitikot eivät pidä singletonia suunnittelumallina, vaan ns. epäsuunnittelumallina. Syitä tähän on arveltu olevan mallin yksinkertaisuus ja väärinkäyttö osaamattomissa käsissä.[4]
Lähteet
- Gamma, Erich & Helm, Richard & Johnson, Ralph & Vlissides, John: Design Patterns, Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. ISBN 0201633612.
Viitteet
- ↑ STL Singleton Template cc.byexamples.com. 9.6.2008. Arkistoitu 26.3.2018. Viitattu 26.3.2018.
- ↑ Krzysztof Stencel, Patrycja Węgrzynowicz: Implementation Variants of the Singleton Design Pattern, s. 396–406. Berlin, Heidelberg: Springer Berlin Heidelberg, 2008. ISBN 978-3-540-88874-1, 978-3-540-88875-8. Teoksen verkkoversio (viitattu 21.3.2023).
- ↑ Java Singleton Design Pattern Best Practices with Examples | DigitalOcean www.digitalocean.com. Viitattu 21.3.2023. (englanniksi)
- ↑ The singleton pattern: evil or just misused? Contentful. Viitattu 21.3.2023. (englanniksi)