Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 15843|Odgovoriti: 0

[Vir] Analiza statičnih metod in enojnih vzorcev

[Kopiraj povezavo]
Objavljeno na 10. 10. 2019 18:15:05 | | |
Pogosto imamo takšno zmedo v programiranju, nekatere funkcije se rešujejo z uporabo enojnih metod, druge pa s statičnimi metodami, kakšni so torej principi in scenariji uporabe statičnih metod in enojnih metod? Danes naj bo to jasno.

1. Najprej si poglejmo razliko med statičnimi in nestatičnimi metodami?

        Veliko programerjev razume, da se statične metode najprej naložijo, nestatične se nalagajo šele, statične metode bodo vedno obstajale v pomnilniku, nestatične pa ne. Zato je priporočljivo uporabljati nestatično metodo. Najprej je napačno poudarjati, da je to razumevanje napačno.

        Najprej analizirajmo iz spomina: ko je aplikacija inicializirana, je CLR (CLR je Common Language Runtime) tudi okolje za izvajanje, podobno kot Java virtualni stroj, ki je odgovoren za upravljanje virov (dodeljevanje pomnilnika in zbiranje smeti itd.) ter zagotavlja potrebno ločitev med aplikacijo in osnovnim operacijskim sistemom. CLR ima dve različni prevajalski imeni: Common Language Runtime in Common Language Runtime. Vsakemu procesu dodeli naslovni prostor v razpoložljivem prostoru procesa, ki je upravljana kopica. Upravljana kopica je razdeljena na več regij, najpomembnejši pa sta garbage collection heap (GC heap) in loader heap (Loader heap), ki se uporablja za shranjevanje objektnih instanc in ga upravlja GC. Najpomembnejše informacije, ki jih Loader Heap shranjuje skozi tabelo MethodTable, so informacije, povezane z metapodatki, kot so vrste osnov, statična polja, vmesniki za implementacijo in vse metode. Loader Heap ne sprejema GC nadzora, njegov življenjski cikel pa poteka od ustvarjanja do uničenja. Z drugimi besedami, ko je razred naložen, se tako statične kot nestatične metode tega razreda shranijo v tabelo MethodTab Load Heap, brez GC nadzora, in vse ostanejo v pomnilniku za prvo nalaganje.

        Kakšna je razlika med statično in nestatično metodo? Razlika je v tem, da ima statična metoda pri ustvarjanju objekta le kopijo, medtem ko nestatična metoda kopira kopijo informacij o tem primeru na GC Heap za vsak nov nov objekt in hkrati novi objekt postavi na sklad. Naslov, na katerega kaže kazalec na sklad, je pomnilniški naslov, ki je bil pravkar kopiran v GC Heap. Zato so statične metode glede hitrosti klica metod hitrejše, ker je treba nestatične metode instancirati in dodeljevati pomnilnik.

Z vidika zgodovine programiranja so bile skoraj vse metode zgodnjega strukturiranega programiranja statične metode, uvedba instancijskih metod pa je bila stvar objektno usmerjenega programiranja, zato metoda uničevanja ni rešila problema učinkovitosti delovanja in pomnilnika. Namen je narediti razvoj bolj vzorčen in objektno usmerjen.

        Iz zgornje analize lahko izpeljemo zaključek: 1. Statična metoda in nestatična metoda razlikujeta način rešitve. 2. Če dedovanje, polimorfizem ali če metoda nima nobene zveze z objektom svojega razreda, bi morali izbrati statično metodo, kot je razred orodja.        

2. Kakšna je razlika med singleton načinom in statično metodo?

        Včasih moramo v inženiringu vzdrževati določen podatek, kot so nekateri konfiguracijski atributi, ki se naložijo med izvajanjem, morajo obstajati skozi celotno življenjsko dobo aplikacije in so javni, zato je potrebna le ena kopija. Trenutno bomo razmislili o uporabi singleton ali statične metode za vzdrževanje teh podatkov, vendar bomo ti podatki pridobljeni na objektno usmerjen način, uporabili bomo singleton.

        Prvič, statične metode temeljijo na razredih, singletoni pa na objektih. Če je vzorec ločljivosti objektno osnovan, uporabite singleton, sicer uporabite statični pristop. Na primer, morate podedovati razrede, implementirati vmesnike, zakasniti inicializacijo, prepisati razrede nadrejenega itd., da uporabite singletone, drugič, statične metode so procesno usmerjene, singletoni pa objektno usmerjeni. Tretjič, statične spremenljivke atributov GC ne bo počistil, zato enojni objekti ne bodo izbrisani s strani GC, objekti, generirani v statičnih metodah, pa bodo sproščeni ob izvajanju statične metode.




Prejšnji:Praksa porazdeljene vmesne programske opreme za sporočanje (avtor Ni Wei) Celoten kitajski PDF
Naslednji:Izklop prenosnika Dell Latitude 5501 in težava s samodejnim vklopom odpravljena
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com