See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 15843|Vastuse: 0

[Allikas] Staatiliste meetodite ja üksikmustrite analüüs

[Kopeeri link]
Postitatud 10.10.2019 18:15:05 | | |
Programmeerimises esineb sageli sellist segadust, mõned funktsioonid lahendatakse üksikmeetoditega ja mõned funktsioonid staatiliste meetoditega, nii et millised on staatiliste meetodite ja üksikmeetodite põhimõtted ja kasutusstsenaariumid? Teeme selle asja täna selgeks.

1. Vaatame esmalt staatiliste ja mittestaatiliste meetodite erinevust?

        Paljud programmeerijad mõistavad, et staatilised meetodid laaditakse esimesena, mittestaatilised meetodid hiljem, staatilised meetodid eksisteerib alati mälus ja mittestaatilised meetodid mitte. Seetõttu soovitatakse kasutada mittestaatilist meetodit. Esiteks on vale rõhutada, et see arusaam on vale.

        Kõigepealt analüüsime mälust: rakenduse initsialiseerimise ajal on CLR (CLR on Common Language Runtime) samuti käituskeskkond nagu Java virtuaalmasin, mis vastutab ressursihalduse eest (mälu eraldamine ja prügi kogumine jne) ning tagab vajaliku eraldatuse rakenduse ja aluseks oleva operatsioonisüsteemi vahel. CLR-il on kaks erinevat tõlkenime: Common Language Runtime ja Common Language Runtime. Iga protsessi jaoks eraldab aadressiruumi protsessi kättesaadavas ruumis, mis on hallatav kuhja. Hallatav kuhja on jagatud mitmeks piirkonnaks, millest kõige olulisemad on prügikogumise kuhja (GC kuhja) ja laadija kuhja (Loader Heap), mida kasutatakse objekti eksemplaride salvestamiseks ja mida haldab GC. Kõige olulisem info, mida Loader Heap salvestab MethodTable tabeli kaudu, on metaandmetega seotud info, nagu baastüübid, staatilised väljad, rakendusliidesed ja kõik meetodid. Loader Heap ei aktsepteeri GC kontrolli ning selle elutsükkel kestab loomisest hävimiseni. Teisisõnu, kui klass on laaditud, salvestatakse nii staatilised kui ka mittestaatilised meetodid Load Heap'i MethodTab tabelisse ilma GC kontrollita ning need on kõik mälus esimese laadimise ajal.

        Mis on staatilisel meetodil ja mittestaatilisel meetodil? Erinevus seisneb selles, et objekti loomisel on staatilisel meetodil ainult koopia, samas kui mittestaatiline meetod kopeerib iga uue objekti jaoks selle instantsi info GC Heapis ja samal ajal lisab uue objekti virna. Aadress, millele virna osuti osutab, on mäluaadress, mis just kopeeriti GC Heap'i. Seetõttu on meetodikutse kiiruse mõttes staatilised meetodid kiiremad, sest mittestaatilisi meetodeid tuleb instantsida ja mälu eraldada.

Programmeerimise ajaloo vaatenurgast olid peaaegu kõik varajase struktureeritud programmeerimise meetodid staatilised meetodid ning instantsieerimismeetodite kasutuselevõtt oli objektorienteeritud programmeerimise küsimus, seega ei lahendanud instantsieerimismeetod jõudluse ja mälu probleemi. See on selleks, et areng oleks mustrilisemaks ja objektorienteeritumaks.

        Ülaltoodud analüüsist võib järeldada: 1. Staatiline meetod ja mittestaatiline meetod on lahendusrežiimi erinevus. 2. Kui pärilikkus, polümorfism või meetod ei ole seotud oma klassi objektiga, peaksid valima staatilise meetodi, näiteks tööriistaklassi.        

2. Mis on singleton-režiimil ja staatilisel meetodil?

        Mõnikord peame inseneriteaduses säilitama mingit teavet, näiteks mõningaid konfiguratsiooniatribuute, mis laaditakse käitusajal, kuid peavad eksisteerima kogu rakenduse eluea jooksul ja olema avalikud, seega on vaja vaid ühte koopiat. Praegu kaalume üksik- ehk staatilise meetodi kasutamist andmete säilitamiseks, kuid sel ajal saadakse need andmed objektorienteeritud viisil, kasutame singleton-meetodit.

        Esiteks on staatilised meetodid klassipõhised ja singletonid objektipõhised. Kui resolutsioonimuster on objektipõhine, kasuta üksikmustrit, muidu staatilist lähenemist. Näiteks pead pärima klasse, rakendama liideseid, viivitama initsialiseerimist, kirjutama vanemklasse ümber jne, et kasutada singletoneid, teiseks on staatilised meetodid protsessipõhised ja singletonid objektipõhised. Kolmandaks, staatiliste atribuudi muutujaid GC ei puhasta, seega üksikud objektid GC poolt ei kustutata ning staatiliste meetoditega genereeritud objektid vabastatakse staatilise meetodi käivitamisel.




Eelmine:Hajutatud sõnumite vahendustarkvara praktika (autor Ni Wei) Täielik hiina PDF
Järgmine:Dell Latitude 5501 sülearvuti väljalülitus ja automaatne toite sisselülitamine lahendatud
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com