Ero sivun ”Singleton” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[katsottu versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
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

Tämä artikkeli käsittelee ohjelmistotekniikan suunnittelumallia. Singleton käsittelee kaupunkia Australiassa

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.

Singletonin esitys luokkakaaviossa.

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

  1. STL Singleton Template cc.byexamples.com. 9.6.2008. Arkistoitu 26.3.2018. Viitattu 26.3.2018.
  2. 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).
  3. Java Singleton Design Pattern Best Practices with Examples | DigitalOcean www.digitalocean.com. Viitattu 21.3.2023. (englanniksi)
  4. The singleton pattern: evil or just misused? Contentful. Viitattu 21.3.2023. (englanniksi)