Τρόπος υλοποίησης ιδιωτικού κατασκευαστή στην Java



Αυτό το άρθρο θα σας παράσχει μια λεπτομερή και περιεκτική γνώση του Private Constructor στην Java και χρησιμοποιεί με παραδείγματα.

Κατασκευαστές χρησιμοποιούνται για την προετοιμασία της κατάστασης ενός αντικειμένου. Παρόμοια με τις μεθόδους, ένας κατασκευαστής μπορεί επίσης να διατηρεί μια συλλογή δηλώσεων, οι οποίες δεν μπορούν να ονομαστούν παρά μόνο οδηγίες. Σε αυτό το άρθρο, θα συζητήσουμε τον ιδιωτικό κατασκευαστή στο με την ακόλουθη σειρά:

Εισαγωγή στον Κατασκευαστή στην Java

Οι κατασκευαστές εκτελούνται κατά τη στιγμή της δημιουργίας αντικειμένων. Για να κατανοήσετε καλύτερα τον κατασκευαστή και τις εφαρμογές του, σκεφτείτε ένα κουτί ως τάξη. Μια κατηγορία Box θεωρείται ότι έχει κάποιες μεταβλητές τάξης (δηλαδή μήκος, πλάτος και ύψος). Ωστόσο, κατά τη στιγμή της δημιουργίας του αντικειμένου του (δηλ. Υπάρχει πλαίσιο στη μνήμη του υπολογιστή), έτσι μπορεί να υπάρχει κιβώτιο χωρίς καθορισμένη τιμή για τις διαστατικές του ποσότητες.





Προφανώς, όχι.

Ως εκ τούτου, ένας κατασκευαστής εισάγεται για την εκχώρηση τιμών σε μεταβλητές κλάσης κατά τη δημιουργία αντικειμένων. Αυτό μπορεί να γίνει ρητά από τον προγραμματιστή ή από την ίδια την Java. Όταν γίνεται από την ίδια την Java, ονομάζεται προεπιλεγμένος κατασκευαστής.



Είναι επιτακτική ανάγκη να κατανοήσουμε ότι οποιαδήποτε μέθοδος, η οποία διαθέτει προσδιοριστή πρόσβασης που παρέχεται από τον κωδικοποιητή στον κατασκευαστή, η οποία γίνεται ιδιωτική, είναι προσβάσιμη μόνο μέσα στην ίδια την τάξη.

Ιδιωτικός κατασκευαστής στην Java

Τάξη Singleton

Από το ίδιο το όνομα, μπορούμε να ονομάσουμε ένα μάθημα μιας κατηγορίας εάν περιορίζει τον αριθμό των αντικειμένων αυτής της τάξης σε ένα. Μια κλάση δεν μπορεί να έχει περισσότερα από ένα αντικείμενα σε τέτοιες περιπτώσεις. Τα μαθήματα singleton χρησιμοποιούνται εξαντλητικά σε έννοιες όπως η δικτύωση και η συνδεσιμότητα της βάσης δεδομένων. Η τάξη Singleton είναι ένα ιδιωτική τάξη .



Πρέπει να υπάρχει ένας άλλος τρόπος για να εξαγάγετε την παρουσία της τάξης και μια μέθοδο επιστροφής για να ανακτήσετε το αποτέλεσμα. Παρακάτω είναι μια κατάλληλη εικόνα του ίδιου. Το πρώτο εικονόγραμμα απεικονίζει το πιθανό αποτέλεσμα όπου η τιμή του 'a.x' ισούται με 20 και η τιμή του 'b.x' έχει επίσης αποτελέσματα σε 20. Στον κώδικα, ενώ ορίζουμε την ιδιωτική κλάση singleton, δεν είναι δυνατή η πρόσβαση στους κατασκευαστές αυτής εκτός της κλάσης.

Τιμή a.x = 20

string to java util date

Τιμή b.x = 20

// Πρόγραμμα Java για να δείξει την εφαρμογή του μοτίβου Singleton // χρησιμοποιώντας ιδιωτικούς κατασκευαστές. εισαγωγή java.io. * class MySingleton {static MySingleton instance = null public int x = 10 // ιδιωτικός κατασκευαστής δεν είναι προσβάσιμος εκτός της κλάσης ιδιωτικό MySingleton () {} // Εργοστασιακή μέθοδος για να παρέχονται στους χρήστες στιγμές στατικού δημόσιου MySingleton getInstance () {if (instance == null) instance = new MySingleton () instance instance}} // Κατηγορία προγράμματος οδήγησης Main {public static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('Value of ax =' + ax) System.out.println ('Value of bx =' + bx)}}

Αντίκτυπος ιδιωτικού κατασκευαστή στην Java

Οι ιδιωτικοί κατασκευαστές δεν μπορούν να έχουν πρόσβαση σε παράγωγες κλάσεις από άλλη τάξη. Έτσι, πρέπει να δώσουμε μια δημόσια λειτουργία, η οποία καλεί τον ιδιωτικό κατασκευαστή. Σε περίπτωση που το αντικείμενο δεν έχει αρχικοποιηθεί ή πρέπει να στείλουμε μια παρουσία στο αντικείμενο εάν είχε αρχικοποιηθεί. Αυτό είναι ιδιαίτερα χρήσιμο για αντικείμενα, τα οποία δεν μπορούν να αρχικοποιηθούν. Ένας ιδιωτικός κατασκευαστής χρησιμοποιείται στις ακόλουθες περιπτώσεις:

  • Οι αντίστοιχες τάξεις, οι οποίες έχουν μόνο στατικές μεθόδους και μέλη.
  • Οι συγκεκριμένες τάξεις, οι οποίες έχουν χρησιμοποιήσει μόνο στατικά τελικά μέλη (σταθερές).
  • Να ενσωματώσει singletons.
  • Να ενσωματώσει τις εργοστασιακές μεθόδους.

Για να χρησιμοποιήσετε απαριθμήσεις, που είναι ασφαλείς τύπου.

Εσωτερική αλυσίδα κατασκευαστή

Η εσωτερική αλυσίδα κατασκευαστή είναι όταν ένας κατασκευαστής καλεί άλλο κατασκευαστή της ίδιας κλάσης, τότε μπορεί να αναφέρεται ως αλυσίδα κατασκευαστή. Είναι καθήκον μας να χρησιμοποιήσουμε αυτήν τη λέξη-κλειδί για να καλέσουμε έναν άλλο κατασκευαστή της τάξης. Σε ορισμένες περιπτώσεις, χρησιμοποιείται για τον ορισμό ορισμένων προεπιλεγμένων τιμών των μεταβλητών κλάσης. Λάβετε επίσης υπόψη ότι μια άλλη κλήση κατασκευαστή πρέπει να είναι η πρώτη δήλωση στο μπλοκ κώδικα.

τι είναι το jframe στην Ιάβα

Επιπλέον, δεν πρέπει να υπάρχουν αναδρομικές κλήσεις, οι οποίες θα δημιουργήσουν έναν άπειρο βρόχο. Ας ρίξουμε τώρα μια ματιά σε ένα παράδειγμα μιας αλυσίδας κατασκευαστή στο πρόγραμμα java.

package com.journaldev.constructor δημόσια τάξη Υπάλληλος {private int id private String name public Employee () {this ('John Doe', 999) System.out.println ('Default Employee Created')} δημόσιος υπάλληλος (int i) { αυτό («John Doe», i) System.out.println («Υπάλληλος δημιουργήθηκε με προεπιλεγμένο όνομα»)} δημόσιος υπάλληλος (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) Employee emp1 = new Employee (10) System.out.println (emp1) Υπάλληλος emp2 = νέος υπάλληλος ('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 (όνομα συμβολοσειράς) {this.name = name}}

Μοτίβο σχεδίασης τάξης Singleton

  • Μέλος σε επίπεδο τάξης (Eager Initialization Method):

  1. Πρώτα, δημιουργήστε μια ιδιωτική σταθερή παρουσία μιας τάξης singleton.

  2. Στη συνέχεια, γράψτε μια στατική μέθοδο, η οποία επιστρέφει το αντικείμενο μιας τάξης singleton, την οποία δημιουργήσαμε ως παρουσία μέλους τάξης.

  3. Είναι δυνατό να επισημάνετε ένα στατικό μέλος ως κοινό για άμεση πρόσβαση σε σταθερή στατική παρουσία.

  4. Η τάξη singleton ποικίλλει από μια κανονική τάξη Java ως προς το instantiation. Σε μια κανονική τάξη, χρησιμοποιείται ένας κατασκευαστής, αλλά για την κατηγορία singleton χρησιμοποιούμε τη μέθοδο get Instance ().

  • Μέλος επιπέδου τάξης (Lazy Initialization Method):

  1. Αρχικά, ξεκινήστε έναν κατασκευαστή ως ιδιωτικό.

  2. Στη συνέχεια, δημιουργήστε μια ιδιωτική στατική παρουσία αυτής της κατηγορίας singleton. Λάβετε υπόψη ότι ΔΕΝ το δημιουργείτε.

  3. Στη συνέχεια, γράψτε μια στατική μέθοδο, η οποία ελέγχει το μέλος στατικής παρουσίας για null και ξεκινά την παρουσία. Τέλος, επιστρέφει ένα αντικείμενο της τάξης singleton.

  • Μέλος επιπέδου τάξης (Lazy Initialization with double lock Method):

Σκεφτείτε να εκτελούνται δύο νήματα όπου και οι δύο μπαίνουν ταυτόχρονα στη δήλωση 'if' ενώ η παρουσία είναι μηδενική. Όπου, ένα νήμα μπαίνει σε ένα συγχρονισμένο μπλοκ για να δημιουργήσει μια παρουσία, ενώ το άλλο είναι μπλοκαρισμένο. Καθώς το πρώτο νήμα βρίσκεται στο συγχρονισμένο μπλοκ, το νήμα στην ουρά δημιουργεί ένα άλλο αντικείμενο. Λάβετε υπόψη ότι καθώς το δεύτερο νήμα μπαίνει σε ένα συγχρονισμένο μπλοκ, δεν μπορεί να ελέγξει αν η παρουσία είναι μη-μηδενική.

  • Χρήση ένθετης εσωτερικής κλάσης (μέθοδος Lazy Load):

Εδώ, βασίζεται σε Java Language Specifications (JLS). Η εικονική μηχανή Java φορτώνει στατικά δεδομένα-μέλη μόνο κατ 'απαίτηση. Έτσι, η κατηγορία Singleton φορτώνεται πρώτα από την JVM. Ως εκ τούτου, δεν υπάρχει μέλος στατικών δεδομένων σε μια τάξη

Ο κάτοχος τάξης Singleton δεν φορτώνει SINGLE_INSTANCE. Όταν επικαλούμεθα τη μέθοδο getIntance, συμβαίνει μόνο αυτό. Το JLS εγγυάται την εκτέλεση της αρχικοποίησης της τάξης. Μια διάταξη για ρητό συγχρονισμό στη στατική μέθοδο getInstance () για φόρτωση και αρχικοποίηση. Καθώς η αρχικοποίηση δημιουργεί τη στατική μεταβλητή SINGLE_INSTANCE με διαδοχικό τρόπο, όλες οι ταυτόχρονες επικλήσεις του getInstance () θα επιστρέψουν το ίδιο χωρίς γενικά συγχρονισμού.

Δεν είναι όλες οι παραπάνω προσεγγίσεις ολοκληρωμένες λύσεις σε όλες τις περιπτώσεις. Πολλές παρουσίες των παραπάνω εφαρμογών μπορούν να δημιουργηθούν με χρήση προβληματισμού. Και στα δύο σενάρια, μπορούμε να παρακάμψουμε τον ιδιωτικό κατασκευαστή και να δημιουργήσουμε πολλές παρουσίες. Ως εκ τούτου, μια νέα προσέγγιση είναι να δημιουργήσετε μια τάξη singleton χρησιμοποιώντας τα αθροίσματα. Δεδομένου ότι τα πεδία enums συντάσσονται σταθερές χρόνου, είναι περιπτώσεις του τύπου enum. Κατασκευάζονται όταν αναφέρεται ο τύπος enum για πρώτη φορά.

Με αυτό, φτάνουμε στο τέλος του άρθρου Private Constructor in Java. Ελπίζω να έχετε κατανοήσει τους Private Constructors και πώς μπορούν να χρησιμοποιηθούν στην Java.

Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για μαθητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java. Το μάθημα έχει σχεδιαστεί για να σας δώσει μια πρώτη αρχή στον προγραμματισμό Java και να σας εκπαιδεύσει τόσο για τις βασικές όσο και για τις προηγμένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου «Java Tutorial» και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.