Δηλώσεις και εκφράσεις αντικειμένων Kotlin

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

Δηλώσεις αντικειμένων

Το Singleton είναι ένα αντικειμενοστρεφή μοτίβο όπου μια τάξη μπορεί να έχει μόνο μία παρουσία (αντικείμενο).

Για παράδειγμα, εργάζεστε μια εφαρμογή που έχει backend βάσης δεδομένων SQL. Θέλετε να δημιουργήσετε μια ομάδα σύνδεσης για πρόσβαση στη βάση δεδομένων ενώ χρησιμοποιείτε ξανά την ίδια σύνδεση για όλους τους πελάτες. Γι 'αυτό, μπορείτε να δημιουργήσετε τη σύνδεση μέσω singleton class έτσι ώστε κάθε πελάτης να έχει την ίδια σύνδεση.

Το Kotlin παρέχει έναν εύκολο τρόπο για να δημιουργήσετε singletons χρησιμοποιώντας τη δυνατότητα δήλωσης αντικειμένων. Για αυτό, χρησιμοποιείται η λέξη-κλειδί αντικειμένου.

 αντικείμενο SingletonExample (… // σώμα κλάσης…)

Ο παραπάνω κώδικας συνδυάζει μια δήλωση τάξης και μια δήλωση για μία παρουσία SingletonExample της κλάσης.

Μια δήλωση αντικειμένου μπορεί να περιέχει ιδιότητες, μεθόδους και ούτω καθεξής. Ωστόσο, δεν επιτρέπεται να έχουν κατασκευαστές (κάτι που έχει νόημα). Γιατί;

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

Παράδειγμα: Δήλωση αντικειμένου

 object Test ( private var a: Int = 0 var b: Int = 1 fun makeMe12(): Int ( a = 12 return a ) ) fun main(args: Array) ( val result: Int result = Test.makeMe12() println("b = $(Test.b)") println("result = $result") )

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

 b = 1 αποτέλεσμα = 12

Η δήλωση αντικειμένου μπορεί να κληρονομήσει από τάξεις και διεπαφές με παρόμοιο τρόπο όπως οι κανονικές τάξεις.

Singletons και Εξάρτηση Εξάρτηση

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

Συνιστώμενη ανάγνωση: Σχέδιο έγχυσης εξάρτησης & Singleton

Εκφράσεις αντικειμένου Kotlin

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

 window.addMouseListener (αντικείμενο: MouseAdapter () (override fun mouseClicked (e: MouseEvent) (//…) override fun mouseEntered (e: MouseEvent) (//…)))

(Το παράδειγμα προέρχεται από την επίσημη σελίδα εγγράφων του Kotlin.)

Εδώ, ένα ανώνυμο αντικείμενο δηλώνεται ότι επεκτείνει την κλάση MouseAdapter. Το πρόγραμμα παρακάμπτει δύο MouseAdapterμεθόδους: mouseClicked()και mouseEntered().

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

 val obj = αντικείμενο: MouseAdapter () (παράκαμψη fun mouseClicked (e: MouseEvent) (//…) override fun mouseEntered (e: MouseEvent) (//…))

Παράδειγμα: Έκφραση αντικειμένου Kotlin

 open class Person() ( fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person() ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

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

Τρώγοντας φαγητό. Μιλώντας με ανθρώπους. Δεν προσεύχομαι. Είμαι άθεος.

Εδώ, ένα ανώνυμο αντικείμενο αποθηκεύεται σε μεταβλητή αθεϊσμό που εφαρμόζει την κατηγορία Person με pray()μέθοδο.

Εάν εφαρμόζετε μια κλάση που έχει έναν κατασκευαστή για να δηλώσει ένα ανώνυμο αντικείμενο, πρέπει να περάσετε τις κατάλληλες παραμέτρους του κατασκευαστή. Για παράδειγμα,

 open class Person(name: String, age: Int) ( init ( println("name: $name, age: $age") ) fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person("Jack", 29) ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

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

όνομα: Τζακ, ηλικία: 29 τρώγοντας φαγητό. Μιλώντας με ανθρώπους. Δεν προσεύχομαι. Είμαι άθεος.

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