Kuinka toteuttaa yksityinen rakentaja Java-sovelluksessa



Tämä artikkeli antaa sinulle yksityiskohtaisen ja kattavan tiedon Java Constructorista ja sen käytöstä esimerkkien kanssa.

Rakentajat käytetään alustamaan kohteen tila. Samoin kuin menetelmissä, rakentaja voi myös pitää joukko lauseita, joita voidaan kutsua vain ohjeiksi. Tässä artikkelissa keskustelemme yksityisestä rakentajasta seuraavassa järjestyksessä:

Johdanto Java-rakentajaan

Rakentajat suoritetaan objektin luontihetkellä. Ajattele laatikkoa luokassa, jotta saat paremman käsityksen rakentajasta ja sen sovelluksista. Box-luokassa oletetaan olevan joitain luokan muuttujia (ts. Pituus, leveys ja korkeus). Kuitenkin objektin luomishetkellä (ts. Box on tietokoneen muistissa), voiko siis olla laatikko, jonka ulottuvuuksille ei ole määritetty arvoa.





Ilmeisesti ei.

Siksi otetaan käyttöön konstruktori, joka määrittää arvot luokan muuttujille objektin luomisen yhteydessä. Tämän voi nimenomaisesti tehdä ohjelmoija tai Java itse. Kun Java tekee sen itse, sitä kutsutaan oletuskonstruktoriksi.



On ehdottoman tärkeää ymmärtää, että mihin tahansa menetelmään, jolla on kooderin tarjoama yksityinen rakennuttaja, pääsy vain luokan luokkaan.

Yksityinen rakentaja Java-kielellä

Singleton-luokka

Itse nimestä voimme kutsua luokkaa singletiksi, jos se rajoittaa luokan esineiden määrän yhteen. Luokalla ei voi olla useampi kuin yksi objekti tällaisissa tapauksissa. Yksittäisiä luokkia käytetään tyhjentävästi sellaisissa käsitteissä kuin verkko ja tietokantayhteydet. Singleton-luokka on a yksityisluokka .



toiminnon tyyppi neliöina

On oltava toinen tapa poimia luokan esiintymä ja palautusmenetelmä tuloksen noutamiseksi. Alla on osuva esimerkki samasta. Ensimmäisessä kuvassa kuvataan todennäköinen tulos, jossa 'a.x': n arvo on 20 ja 'b.x': n arvo myös 20. Vaikka määritämme koodissa yksittäisen yksityisluokan, sen rakentajia ei voida käyttää luokan ulkopuolella.

Arvo x = 20

Bx: n arvo = 20

// Java-ohjelma Singleton // -kuvion toteutuksen osoittamiseksi yksityisillä rakentajilla. tuo java.io. * luokka MySingleton {staattinen MySingleton-ilmentymä = null julkinen int x = 10 // yksityistä rakennuttajaa ei voi käyttää luokan yksityinen MySingleton () {} // Tehdasmenetelmä, joka tarjoaa käyttäjille staattisen julkisen MySingleton-esiintymän getInstance () {if (instance == null) instance = new MySingleton () return instance}} // Driver Class class Main {public static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('axen arvo =' + ax) System.out.println ('bx: n arvo =' + bx)}}

Yksityisen rakentajan vaikutus Java-sovellukseen

Yksityiset rakentajat eivät voi käyttää johdettuja luokkia toisesta luokasta. Siksi meidän on annettava julkinen toiminto, joka kutsuu yksityisen rakentajan. Siinä tapauksessa, että objektia ei alusteta, tai meidän on lähetettävä takaisin ilmentymä objektille, jos se alustettiin. Tämä on erityisen hyödyllinen kohteille, joita ei voida alustaa. Yksityistä rakentajaa käytetään seuraavissa tapauksissa:

  • Vastaavat luokat, joilla on vain staattiset menetelmät ja jäsenet.
  • Erityiset luokat, joissa on vain laajalti käytetty staattisia loppujäseniä (vakioita).
  • Sisältää singletoneja.
  • Sisältää tehdasmenetelmät.

Hyödyntämään tyyppiturvallisia luetteloita.

Sisäinen rakentajan ketju

Sisäinen konstruktoriketju on silloin, kun konstruktori kutsuu toisen saman luokan rakentajan, niin sitä voidaan kutsua konstruktoriketjuiksi. Velvollisuutemme on käyttää tätä avainsanaa kutsua toinen luokan rakentaja. Joissakin tapauksissa sitä käytetään luokan muuttujien joidenkin oletusarvojen määrittelemiseen. Muista myös, että toisen rakentajan kutsun on oltava ensimmäinen lause lauseosassa.

Lisäksi ei pitäisi olla rekursiivisia puheluita, jotka luovat loputtoman silmukan. Katsokaamme nyt esimerkkiä konstruktoriketjuusta java-ohjelmassa.

paketti com.journaldev.constructor public class Employee {private int id private String name public Employee () {this ('John Doe', 999) System.out.println ('Default Employee Created')} public Employee (int i) { this ('John Doe', i) System.out.println ('Employee Created with Default Name')} julkinen työntekijä (String s, int i) {this.id = i this.name = s System.out.println ( 'Employee Created')} public static void main (String [] args) {Employee emp = new Employee () System.out.println (emp) Työntekijä emp1 = uusi työntekijä (10) System.out.println (emp1) Työntekijä emp2 = uusi työntekijä ('Pankaj', 20) System.out.println (emp2)} @Override public String toString () {return 'ID =' + id + ', Name =' + name} public int getId () {return id } public void setId (int id) {this.id = id} public String getName () {return name} public void setName (String name) {this.name = name}}

Singleton-luokan suunnittelukuvio

  • Luokan tason jäsen (innokas alustusmenetelmä):

  1. Tee ensin yksityinen vakio staattinen esiintymä singleton-luokasta.

  2. Kirjoita sitten staattinen menetelmä, joka palauttaa yhden jäsenen luokan objektin, jonka olemme luoneet luokan jäsenenä.

  3. Staattinen jäsen on mahdollista merkitä yleisöksi, jotta pääset suoraan vakiona olevaan staattiseen esiintymään.

  4. Singleton-luokka eroaa normaalista Java-luokasta välittömyyden suhteen. Normaaliluokassa käytetään konstruktoria, mutta singleton-luokassa käytämme get instance () -menetelmää.

  • Luokan tason jäsen (Lazy Initialization Method):

  1. Aloita ensin rakentaja yksityisenä.

  2. Luo sitten yksityinen staattinen esiintymä tästä singleton-luokasta. Pidä mielessä, ettet suorita sitä heti.

  3. Kirjoita sitten staattinen menetelmä, joka tarkistaa staattisen ilmentymän jäsenen nollan ja aloittaa ilmentymän. Lopuksi se palauttaa singleton-luokan objektin.

  • Luokkatason jäsen (Lazy Initialization with double lock Method):

Harkitse kahta käynnissä olevaa ketjua, joissa molemmat pääsevät ”if” -lausekkeen sisään samanaikaisesti, kun ilmentymä on nolla. Missä toinen ketju menee synkronoituun lohkoon luomaan ilmentymän, kun taas toinen on estetty. Kun ensimmäinen ketju sijaitsee synkronoidussa lohkossa, jonossa oleva säie luo toisen singleton-objektin. Huomaa, että kun toinen säike tulee synkronoituun lohkoon, se ei tarkista, onko ilmentymä ei-nolla.

  • Sisäkkäisen sisäisen luokan käyttäminen (Lazy Load -menetelmä):

Tässä se perustuu Java-kielimäärityksiin (JLS). Java-virtuaalikone lataa staattisia datajäseniä vain tarvittaessa. Siten Singleton-luokka latautuu ensin JVM: n toimesta. Siksi luokassa ei ole staattista dataa

Singleton-luokan haltija ei lataa SINGLE_INSTANCE. Kun käytämme getIntance-menetelmää, vain tämä tapahtuu. JLS takaa luokan alustuksen suorittamisen. Varaus nimenomaiseen synkronointiin staattisella getInstance () -menetelmällä lataamista ja alustamista varten. Kun alustus luo staattisen muuttujan SINGLE_INSTANCE peräkkäin, kaikki getInstance (): n samanaikaiset kutsut kutsutaan takaisin ilman synkronoinnin yleiskustannuksia.

  • Käyttämällä Enumsia

Kaikki edellä mainitut lähestymistavat eivät ole täydellisiä ratkaisuja kaikissa tapauksissa. Useita yllä olevien toteutusten esiintymiä voidaan luoda käyttämällä heijastusta. Molemmissa tilanteissa voimme ohittaa yksityisen rakentajan ja luoda useita instansseja. Siksi uusi lähestymistapa on luoda yksinäinen luokka käyttämällä enumeja. Kun enums-kentät ovat koottuja aikavakioita, ne ovat niiden enum -tyyppisiä esiintymiä. Ne rakennetaan, kun enum-tyyppiin viitataan ensimmäistä kertaa.

Tämän myötä olemme päässeet Java Constructor -artikkelin loppuun. Toivon, että sait käsityksen yksityisistä rakentajista ja siitä, miten niitä voidaan käyttää Java-sovelluksessa.

Katso Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssi on suunniteltu opiskelijoille ja ammattilaisille, jotka haluavat olla Java-kehittäjiä. Kurssi on suunniteltu antamaan sinulle etumatka Java-ohjelmointiin ja kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän 'Java Tutorial' -blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.