Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Singleton & Lazy load

Postades av 2008-01-03 17:14:51 - John Tjust, i forum arkitektur, Tråden har 6 Kommentarer och lästs av 1426 personer

Hej,

Jag har lite funderingar kring användandet av Singleton-designmönstret.

Om man har en eller flera referenser till externa resurser i Singleton-klassen hur bör man lämpligtvis instansiera dessa för att få lazy load.

kodexempel:

using System;

    public class Singleton
    {
        #region Attributes
        private ExternalResource _externalResource;
        #endregion
        
        #region Construction
        private Singleton()
        {
             _externalResource = new ExternalResource();
        }

        public static Singleton GetInstance
        {
            get{ return NestedSingleton.GetInstance; }
        }

        private sealed class NestedSingleton
        {
            private static readonly Singleton _instance;

            static NestedSingleton()
            {
                _instance = new Singleton();
            }

            internal static Singleton GetInstance
            {
                get { return _instance; }
            }
        }
        #endregion

        #region Methods
        public void DoSomething()
        {
            _externalResource.DoSomething();
        }
        #endregion
    }


I exemplet ovan kommer _externalResource att instansieras när man anropar Singleton.GetInstance(), men önskvärt vore om den instansieras när man anropar Singleton.GetInstance().DoSomething().
Skall man implementera externa resurser i singletons som singletons? Detta kanske inte är lämpligt i alla lägen och då kommer jag till frågan om man överhuvudtaget bör ha referenser till externa resurser i singleton-klassen eller om singleton-mönstret är fel mönster i denna situation?


Svara

Sv: Singleton & Lazy load

Postades av 2008-01-04 09:53:39 - Johan Normén

Om jag skall va ärlig var din kod inte direkt sjävlbeskrivande.
Fördel med Patterns är att även förtydliga vad man gör. :-)

I ditt fall förstår jag inte varför du skall ha singleton och jag får inte heller känlsan av att du direkt har lazy load i ditt fall så som lazy load oftast används till.

Lazy Load handlar om att Ladda data typ när man ber om det istället för att det kommer med en gång.
Ex Entitet Order med sina OrderRows.

Det är först när du anropar OrderRows som dessa mappas upp och returneras.
I ditt fall kändes det mer som du skapa en Factory pattern.

Måste du då ens ha Singleton?

Mvh johan


Svara

Sv:Singleton & Lazy load

Postades av 2008-01-04 14:17:12 - John Tjust

Hej Johan,

Det var det som var frågan:)

Det blir ju inte lazy load i singleton-klassen eftersom ExternalResource-klassen skapas i konstruktorn, och inte när man anropar funktionen i DoSomething, jag skulle vilja veta vart det är lämpligt att skapa instansen _externalResource i detta fall och om det överhuvudtaget är lämpligt i en singleton.

Mvh
Shamanen


Svara

Sv:Singleton & Lazy load

Postades av 2008-01-04 22:55:35 - Daniel Wertheim

För att förtydliga.....

I DoSomething() vill han ha "lazy initialization" av externalResource..... utan att klämma in if som kollar mot null.


Svara

Sv: Singleton & Lazy load

Postades av 2008-01-07 09:50:10 - Roger Alsing

Får jag fråga varför du inte vill ha en if-sats i dosomething?


public void DoSomething()
{
EnsureLoaded();
//din kod här..
}

private void EnsureLoaded()
{
if (externalResource == null)
externalResource = ....
}


Är ju det klassiska sättet att lösa LL.

Är det att du inte vill cluttra din kod med den funktionalliteten?
Eller är du rädd för prestandaproblem? (tbh. en nullcheck kommer inte påverka din apps prestanda)


Svara

Sv:Singleton & Lazy load

Postades av 2008-01-11 09:23:13 - John Tjust

Hej Roger,

Tack för ditt svar.

Anledningen att jag vill komma ifrån if-satsen beror egentligen på implementeringen av singleton-mönstret.
För att få full LL på instansieringen i singleton-klassen skapar man en intern klass, detta gör att man tar bort if-satsen som kontrollerar om instansieringen har skett. Jag skulle vilja veta om det finns ett lämpligt motsvarande sätt för att instansiera externa resurser i singleton-klassen. Om inte så fungerar det att använda sig av if-kontrollen.

Mvh
John


Svara

Sv:Singleton & Lazy load

Postades av 2008-01-22 21:52:46 - Daniel Wertheim

Min åsikt av den implementation av Singleton-pattern som vi ser lite av här och även på (http://en.wikipedia.org/wiki/Singleton_pattern) är att det inte tillför något om man inte har ytterligare static metoder på sin singleton.

Ang. lazy-load i vanlig metod, etc. så är min åsikt att funderar man på lazy-load så är troligtvis kostnaden av en enkel if-sats försumbar.

Annars går det ju alltid att lösa på ett krångligt sätt med delegater ;)


Svara

Nyligen

  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 893
27 965
271 778
522
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies