Qvaq

Sök efter grupper

Skapa ny grupp

Heta grupper

Nya grupper

Nyligen aktiva grupper

Dependency Injection (Svenska)

Dependency Injection_swe

Gruppmedlemmar (4)

Bild
skanaar
www.nomnoml.com
Bild
gee_fss
Huge
Bild
murtlest
i tyresö
Bild
comfort
Ingen status satt

Offentliga meddelanden

Welcome, guest! Please login or register for free to be able to join the Dependency Injection group and participate in the discussions.

  1. comfort comfort 2011-05-01 15:35

    [removed spam message]

  2. Birming Birming 2009-08-14 11:36

    Och nu kan man föreläsa med hela 420 tecken i varje qvaq! :)

  3. gee_fss gee_fss 2009-06-03 17:20

    Längtar redan till nästa. Tack!

  4. murtlest murtlest 2009-06-03 15:47

    Tack för en bra föreläsning! :)

  5. skanaar skanaar 2009-06-03 15:42

    Vi såg här att ImageCreatorn hade ett beroende mot FileSystem. Genom att injicera detta beroende synliggjorde vi det och gjorde ImageCreatorn mer generell.

  6. skanaar skanaar 2009-06-03 15:40

    Genom att skicka in denna VirtualFileSystem så kan vi använda ImageCreatorn i andra sammanhang utan att ändra på ImageCreator-klassen.

  7. skanaar skanaar 2009-06-03 15:39

    Vi ser nu tydligt att vår Create-metod jobbar mot filsystemet. Vi kan också använda ImageCreatorn i andra sammanhang, t.ex kan vi skapa bilder som bara ligger i RAM-minnet genom att skapa en VirtualFileSystem som ärver av FileSystem.

  8. skanaar skanaar 2009-06-03 15:34

    Men om vi gör om det så här:
    class ImageCreator {

     Create(FileSystem fs, int w, int h){

       File file = fs.CreateFile(w*h);

       return new Image(file, w,h);

     }

    }

  9. skanaar skanaar 2009-06-03 15:33

    Om vi nu gör någon förändring i FileSystem så kan vi förstöra ImageCreatorn. Vi skulle också ha stora problem att enhetstesta ImageCreatorn eftersom den har ett dolt beroende till filsystemet.

  10. skanaar skanaar 2009-06-03 15:29

    I exemplet ser man inte att ImageCreator-klassen är beroende av FileSystem-singeltonen eftersom dess enda metod Create(int,int) bara vill ha en storlek och klassen inte har någon konstruktor.

  11. skanaar skanaar 2009-06-03 15:28

    Exempel:
    class ImageCreator {
     Create(int w, int h){
       File file = FileSystem.GetInstance().CreateFile(w*h);
       return new Image(file, w,h);
     }
    }

  12. skanaar skanaar 2009-06-03 15:23

    Men man får också vissa bieffekter: Instansen är globalt tillgänglig eftersom den är tillgänglig genom en statisk metod. Detta gör att varje klass som använder sig av Singletonen är beroende av den utan att detta syns i metodsignaturerna.

  13. skanaar skanaar 2009-06-03 15:22

    Fördelarna är att man vet att man bara har ett objekt - vilket är rimligt när man har tangentsbords, minnes och OS-hanterare.

  14. skanaar skanaar 2009-06-03 15:08

    Första gången skapas instansen och alla andra gånger får man samma instans som skapades första gången. Klassen tillser alltså att det bara finns en enda instans av sig själv (därav namnet Singleton).

  15. skanaar skanaar 2009-06-03 15:05

    För att få tag på en MemoryManager har klassen en statisk metod (oftast GetInstance()) som returnerar en instans av MemoryManager.

  16. skanaar skanaar 2009-06-03 15:05

    Sammanfattning av vad en Singleton är:
    En klass (t.ex MemoryManager) vars konstruktor är privat och som därmed inte kan instancieras av någon annan än klassen själv.

  17. skanaar skanaar 2009-06-03 14:33

    Hej och välkomna till miniföreläsningen "Dependency Injection (eller Singletons considered harmful)"