Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 15843|Svare: 0

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

[Kopier lenke]
Publisert på 10.10.2019 18:15:05 | | |
Vi har ofte slik forvirring i programmering, noen funksjoner løses med singletoner, og noen funksjoner løses med statiske metoder, så hva er prinsippene og bruksscenariene for statiske metoder og singletoner? La oss gjøre dette klart i dag.

1. La oss først se på forskjellen mellom statiske metoder og ikke-statiske metoder?

        Mange programmerere har denne forståelsen at statiske metoder lastes først, ikke-statiske metoder lastes senere, statiske metoder vil alltid eksistere i minnet, og ikke-statiske metoder vil ikke eksistere. Derfor anbefales det å bruke en ikke-statisk metode. Først og fremst er det feil å understreke at denne forståelsen er feil.

        Først og fremst, la oss analysere fra minnet; når applikasjonen initialiseres, er CLR (CLR er Common Language Runtime) også et kjøremiljø som Java Virtual Machine, som er ansvarlig for ressurshåndtering (minneallokering og søppelrydding, osv.) og sikrer nødvendig separasjon mellom applikasjonen og det underliggende operativsystemet. CLR har to forskjellige oversettelsesnavn: Common Language Runtime og Common Language Runtime. Allokerer et adresseområde til hver prosess i det tilgjengelige området til prosessen, som er den administrerte heapen. Den administrerte heapen er delt inn i flere regioner, hvorav de viktigste er garbage collection-heapen (GC Heap) og loader-heapen (Loader Heap), som brukes til å lagre objektinstanser og administreres av GC. Den viktigste informasjonen som Loader Heap lagrer gjennom MethodTable-tabellen er metadata-relatert informasjon, som basetyper, statiske felt, implementasjonsgrensesnitt og alle metoder. Loader Heap aksepterer ikke GC-kontroll, og livssyklusen går fra skapelse til ødeleggelse. Med andre ord, når en klasse er lastet, lagres både statiske og ikke-statiske metoder i denne klassen i MethodTab-tabellen til Load Heap, uten GC-kontroll, og de er alle resident i minnet for den første lasten.

        Hva er forskjellen mellom en statisk metode og en ikke-statisk metode? Forskjellen er at når man oppretter et objekt, har den statiske metoden bare en kopi, mens den ikke-statiske metoden kopierer en kopi av informasjonen om denne instansen på GC Heap for hvert nytt nytt objekt, og samtidig legger det nye objektet på stakken. Adressen som stakkpekeren peker på, er minneadressen som nettopp ble kopiert til GC Heap. Derfor er statiske metoder raskere når det gjelder hastighet på metodekall fordi ikke-statiske metoder må instansieres og allokere minne.

Fra et programmeringshistorisk perspektiv var nesten alle metoder for tidlig strukturert programmering statiske metoder, og innføringen av instansieringsmetoder var et spørsmål om objektorientert programmering, så instansieringsmetoden skulle ikke løse problemet med kjøreeffektivitet og minne. Det er for å gjøre utviklingen mer mønstret og objektorientert.

        Fra analysen ovenfor kan en konklusjon trekkes: 1. Den statiske metoden og den ikke-statiske metoden er skillet mellom løsningsmodusen. 2. Hvis arv, polymorfi eller hvis en metode ikke har noe med objektet i klassen å gjøre, bør du velge en statisk metode, som en verktøyklasse.        

2. Hva er forskjellen mellom singleton-modus og statisk metode?

        Vi må noen ganger vedlikeholde en informasjonsbit i ingeniørarbeidet, som for eksempel noen konfigurasjonsattributter som lastes inn under kjøring, som må eksistere gjennom hele applikasjonens levetid og er offentlige, så bare én kopi trengs. På dette tidspunktet vil vi vurdere å bruke en singleton eller statisk metode for å vedlikeholde disse dataene, men på dette tidspunktet, når disse dataene hentes på en objektorientert måte, vil vi bruke en singleton.

        For det første er statiske metoder klassebaserte, og singletons objektbaserte. Hvis oppløsningsmønsteret er objektbasert, bruk en singleton, ellers bruk en statisk tilnærming. For eksempel må du arve klasser, implementere grensesnitt, forsinke initialisering, omskrive foreldreklasser osv. for å bruke singletoner, for det andre er statiske metoder prosessorienterte, og singletoner er objektorienterte. For det tredje vil ikke statiske attributtvariabler bli slettet av GC, så singleton-objektene vil ikke bli slettet av GC, og objekter generert i statiske metoder vil bli frigitt når den statiske metoden kjøres.




Foregående:Distributed Messaging Middleware Practice (av Ni Wei) Full kinesisk PDF
Neste:Dell Latitude 5501 laptop-avstenging og automatisk på-på-problemet løst
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com