Gå til innhold

C#: [Løst]Dele statisk klasse vs. unike referanser for hvert objekt.


Anbefalte innlegg

Har en server app som lager et Klient objekt for hver tilkobling.

Klient klassen inneholder noen funksjoner, men har flere objektreferanser til flere andre klasser.

Det jeg lurer på er om dette er en dårlig design fordi den vil ta mye minne hvis det er mange klienter som kobler til samtidig. Alle disse Klient objektene vil jo da få unike referanser til objekter fra de andre klassene. Det er vel sånn det funker?

 

Er det bedre i dette tilfelle å lage de felles metodene i en static klasse?

 

Edit:

Det jeg mener med de felles metodene er funksjonene i Klient klassen som "duplikeres" for hvert Klient objekt, samt metodene i de klassene Klient har et "has-a" forhold til.

Endret av Techster
Lenke til kommentar
Videoannonse
Annonse

Nei, funksjoner som ikke er definert som virtual vil ikke lagres med objektet, og for funksjoner som er definert som virtual vil det kun ligge pekere til funksjonene i vitrual function call tabellen til objektet. Du sparer ingenting på å bruke statiske funksjoner i statiske klasser.

 

Funksjoner vil aldri bli duplisert i utgangspunktet.

Lenke til kommentar

Når du instanserer en klasse eksempelvis 10 ganger så betyr ikek det at du bruker 10 ganger så mye minne til metoder. Selve metodene lilgger i samme minneområde og er felles. På den annen side, hvis du lager en ny klasse som arver, så vil de "nye" metodene selvsagt ta plass. Men som sagt - objektene dine bruker den samme koden. Det som derimot bruker nytt minne er dataene til instansene dine. Har du f.eks. definert en STRING som bruker 1K minne så vil hver instans bruke 1K minne hver.

 

Svaret på ditt spørsmål er derfor NEI. Det er svert lite å spare på å ha en statisk klasse for å samle funksjoner. Personlig bruker jeg svert få statiske klasser, med mindre designet avkrever dette. SPesielt innen InterOP er det påkrevd med statiske klasser

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...