Java Singleton (με παράδειγμα)

Σε αυτό το σεμινάριο, θα μάθουμε για το μοτίβο σχεδίασης singleton και πώς να το εφαρμόσουμε στην Java με τη βοήθεια παραδειγμάτων.

Το Singleton είναι ένα μοτίβο σχεδίασης και όχι ένα χαρακτηριστικό για την Java. Διασφαλίζει ότι δημιουργείται μόνο μία παρουσία μιας κλάσης.

Ένα μοτίβο σχεδίασης είναι σαν τη βιβλιοθήκη κώδικα που περιλαμβάνει διάφορες τεχνικές κωδικοποίησης που μοιράζονται οι προγραμματιστές σε όλο τον κόσμο.

Java Singleton

Δείτε πώς μπορούμε να χρησιμοποιήσουμε singletons στην Java.

  • δημιουργήστε έναν privateκατασκευαστή που περιορίζει τη δημιουργία ενός αντικειμένου εκτός της κλάσης
  • δημιουργήστε ένα privateχαρακτηριστικό που αναφέρεται στο αντικείμενο singleton.
  • δημιουργήστε μια public staticμέθοδο που μας επιτρέπει να δημιουργήσουμε και να αποκτήσουμε πρόσβαση στο αντικείμενο που δημιουργήσαμε. Μέσα στη μέθοδο, θα δημιουργήσουμε μια συνθήκη που μας εμποδίζει να δημιουργήσουμε περισσότερα από ένα αντικείμενα.

Εδώ είναι ένα παράδειγμα.

 class SingletonExample ( // private field that refers to the object private static SingletonExample singleObject; private SingletonExample() ( // constructor of the SingletonExample class ) public static SingletonExample getInstance() ( // write code that allows us to create only one object // access the object as per our need ) ) 

Στο παραπάνω παράδειγμα,

  • private static SingletonExample singleObject - μια αναφορά στο αντικείμενο της τάξης.
  • private SingletonExample() - έναν ιδιωτικό κατασκευαστή που περιορίζει τη δημιουργία αντικειμένων εκτός της τάξης.
  • public static SingletonExample getInstance()- αυτή η μέθοδος επιστρέφει την αναφορά στο μοναδικό αντικείμενο της κλάσης. Δεδομένου ότι η μέθοδος στατική, μπορεί να προσεγγιστεί χρησιμοποιώντας το όνομα κλάσης.

Χρήση της κατηγορίας Singleton

Τα Singletons μπορούν να χρησιμοποιηθούν ενώ εργάζεστε με βάσεις δεδομένων. Μπορούν να χρησιμοποιηθούν για τη δημιουργία μιας ομάδας σύνδεσης για πρόσβαση στη βάση δεδομένων, ενώ επαναχρησιμοποιούν την ίδια σύνδεση για όλους τους πελάτες. Για παράδειγμα,

 class Database ( private static Database dbObject; private Database() ( ) public static Database getInstance() ( // create object if it's not already created if(dbObject == null) ( dbObject = new Database(); ) // returns the singleton object return dbObject; ) public void getConnection() ( System.out.println("You are now connected to the database."); ) ) class Main ( public static void main(String() args) ( Database db1; // refers to the only object of Database db1= Database.getInstance(); db1.getConnection(); ) ) 

Όταν εκτελούμε το πρόγραμμα, η έξοδος θα είναι:

 Είστε πλέον συνδεδεμένοι στη βάση δεδομένων. 

Στο παραπάνω παράδειγμα,

  • Έχουμε δημιουργήσει μια βάση δεδομένων μεμονωμένης τάξης.
  • Το dbObject είναι πεδίο τύπου κλάσης. Αυτό θα αναφέρεται στο αντικείμενο της βάσης δεδομένων κλάσης.
  • Ο ιδιωτικός κατασκευαστής Database()αποτρέπει τη δημιουργία αντικειμένων εκτός της κλάσης.
  • Η μέθοδος στατικού τύπου κατηγορίας getInstance()επιστρέφει την παρουσία της τάξης στον εξωτερικό κόσμο.
  • Στην κύρια τάξη, έχουμε μεταβλητή τύπου κλάσης db1. Καλούμε getInstance()χρησιμοποιώντας το db1 για να λάβουμε το μόνο αντικείμενο της βάσης δεδομένων.
  • Η μέθοδος getConnection()είναι προσβάσιμη μόνο χρησιμοποιώντας το αντικείμενο της βάσης δεδομένων.
  • Δεδομένου ότι η βάση δεδομένων μπορεί να έχει μόνο ένα αντικείμενο, όλοι οι πελάτες μπορούν να έχουν πρόσβαση στη βάση δεδομένων μέσω μιας σύνδεσης.

Είναι σημαντικό να σημειωθεί ότι, υπάρχουν μόνο μερικά σενάρια (όπως η καταγραφή) όπου τα singletons έχουν νόημα. Ακόμη και μια σύνδεση βάσης δεδομένων συνήθως δεν πρέπει να είναι απλή.

Σας συνιστούμε να αποφύγετε εντελώς τη χρήση singletons εάν δεν είστε σίγουροι εάν θα το χρησιμοποιήσετε ή όχι. Μάθετε περισσότερα: Τι είναι τόσο κακό για το Singleton;

ενδιαφέροντα άρθρα...