Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 15843|Svar: 0

[Kilde] Analyse af statiske metoder og singleton-mønstre

[Kopier link]
Opslået på 10/10/2019 18.15.05 | | |
Vi har ofte sådan forvirring i programmering, nogle funktioner løses med singletons, og nogle funktioner løses med statiske metoder, så hvad er principperne og anvendelsesscenarierne for statiske metoder og singletons? Lad os gøre dette klart i dag.

1. Lad os først se på forskellen mellem statiske metoder og ikke-statiske metoder?

        Mange programmører har denne forståelse, at statiske metoder indlæses først, ikke-statiske metoder indlæses senere, statiske metoder vil altid eksistere i hukommelsen, og ikke-statiske metoder vil ikke. Derfor anbefales det at bruge en ikke-statisk metode. For det første er det forkert at understrege, at denne forståelse er forkert.

        Lad os først analysere fra hukommelsen; når applikationen initialiseres, er CLR (CLR er Common Language Runtime) også et runtime-miljø ligesom Java virtual machine, som er ansvarlig for ressourcehåndtering (hukommelsesallokering og garbage collection osv.) og sikrer den nødvendige adskillelse mellem applikationen og det underliggende operativsystem. CLR har to forskellige oversættelsesnavne: Common Language Runtime og Common Language Runtime. Allokerer et adresseområde til hver proces i processens tilgængelige område, som er den administrerede heap. Den administrerede heap er opdelt i flere regioner, hvoraf de vigtigste er garbage collection-heapen (GC Heap) og loader-heapen (Loader Heap), som bruges til at gemme objektinstanser og administreres af GC. Den vigtigste information, som Loader Heap gemmer gennem MethodTable-tabellen, er metadata-relaterede oplysninger, såsom basetyper, statiske felter, implementeringsgrænseflader og alle metoder. Loader Heap accepterer ikke GC-kontrol, og dens livscyklus går fra skabelse til ødelæggelse. Med andre ord, når en klasse er indlæst, gemmes både statiske og ikke-statiske metoder i denne klasse i MethodTab-tabellen for Load Heap uden GC-kontrol, og de er alle resident i hukommelsen ved den første load.

        Hvad er forskellen på en statisk metode og en ikke-statisk metode? Forskellen er, at når man opretter et objekt, har den statiske metode kun en kopi, mens den ikke-statiske metode kopierer en kopi af informationen om denne instans på GC Heap for hvert nyt nyt objekt og samtidig lægger det nye objekt på stakken. Adressen, som stack-pointeren peger på, er den hukommelsesadresse, der netop blev kopieret til GC Heap. Derfor er statiske metoder hurtigere med hensyn til metodekaldshastighed, fordi ikke-statiske metoder skal instansieres og allokere hukommelse.

Set fra programmeringshistoriens perspektiv var næsten alle metoder til tidlig struktureret programmering statiske metoder, og introduktionen af instansieringsmetoder var et spørgsmål om objektorienteret programmering, så instansieringsmetoden løste ikke problemet med driftseffektivitet og hukommelse. Det er for at gøre udviklingen mere mønstret og objektorienteret.

        Ud fra ovenstående analyse kan der drages en konklusion: 1. Den statiske metode og den ikke-statiske metode er forskellen mellem løsningsmetoden. 2. Hvis arv, polymorfi eller hvis en metode ikke har noget at gøre med objektet i dens klasse, bør du vælge en statisk metode, såsom en værktøjsklasse.        

2. Hvad er forskellen mellem singleton-tilstand og statisk metode?

        Vi har nogle gange brug for at vedligeholde en information i engineering, såsom nogle konfigurationsattributter, der indlæses under kørsel, som skal eksistere gennem hele applikationens levetid og er offentlige, så kun én kopi er nødvendig. På dette tidspunkt vil vi overveje at bruge en singleton eller statisk metode til at vedligeholde disse data, men på nuværende tidspunkt, hvor disse data opnås på en objektorienteret måde, vil vi bruge en singleton.

        For det første er statiske metoder klassebaserede, og singletons er objektbaserede. Hvis opløsningsmønstret er objektbaseret, brug en singleton, ellers brug en statisk tilgang. For eksempel skal du arve klasser, implementere grænseflader, forsinke initialisering, omskrive forældreklasser osv. for at bruge singletons, for det andet er statiske metoder procesorienterede, og singletons er objektorienterede. For det tredje vil statiske attributvariabler ikke blive clearet af GC, så singleton-objekterne vil ikke blive clearet af GC, og objekter genereret i statiske metoder vil blive frigivet, når den statiske metode eksekveres.




Tidligere:Distributed Messaging Middleware Practice (af Ni Wei) Fuld kinesisk PDF
Næste:Dell Latitude 5501 laptop slukning og automatisk tænding løst
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com