Tässä artikkelissa opit objekti-ilmoituksista (singletoneista) ja objekti-ilmaisuista esimerkkien avulla.
Esineilmoitukset
Singleton on objektisuuntainen kuvio, jossa luokassa voi olla vain yksi esiintymä (objekti).
Työskentelet esimerkiksi sovelluksella, jolla on SQL-tietokannan taustajärjestelmä. Haluat luoda yhteysvaraston päästäksesi tietokantaan samalla kun käytät samaa yhteyttä kaikille asiakkaille. Tätä varten voit luoda yhteyden singleton-luokan kautta, jotta jokainen asiakas saa saman yhteyden.
Kotlin tarjoaa helpon tavan luoda yksikköjä objektin ilmoittamisominaisuuden avulla. Tätä varten käytetään objektin avainsanaa.
object SingletonExample (… // luokan runko …)
Yllä oleva koodi yhdistää luokan ilmoituksen ja yhden yksittäisen luokan Singleton-esimerkin ilmoituksen.
Objekti-ilmoitus voi sisältää ominaisuuksia, menetelmiä ja niin edelleen. Heillä ei kuitenkaan saa olla rakentajia (mikä on järkevää). Miksi?
Samoin kuin normaaliluokan kohteissa, voit kutsua menetelmiä ja käyttää ominaisuuksia käyttämällä .
merkintää.
Esimerkki: Objekti-ilmoitus
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") )
Kun suoritat ohjelmaa, tulos on:
b = 1 tulos = 12
Objekti-ilmoitus voi periä luokista ja rajapinnoista samalla tavalla kuin tavalliset luokat.
Yksittäiset ja riippuvuusinjektiot
Kohde-ilmoitukset voivat olla hyödyllisiä joskus. Ne eivät kuitenkaan ole ihanteellisia suurissa ohjelmistojärjestelmissä, jotka ovat vuorovaikutuksessa monien muiden järjestelmän osien kanssa.
Suositeltava lukeminen: Riippuvuuden injektio ja Singletonin suunnittelumalli
Kotlin-objektilausekkeet
Kohde-avainsanaa voidaan käyttää myös anonyymien luokkien nimien luomiseen. Niitä käytetään, jos joudut luomaan jonkin luokan tai käyttöliittymän pienen muokkauksen objektin ilmoittamatta sille alaluokkaa. Esimerkiksi ,
window.addMouseListener (objekti: MouseAdapter () (ohittaa hauskan hiiren napsautetun (e: MouseEvent) (//…) ohittaa hauska mouseEntered (e: MouseEvent) (//…)))
(Esimerkki on otettu Kotlinin viralliselta asiakirja-sivulta.)
Täällä, anonyymi kohde julistetaan ulottuu MouseAdapter class.The ohjelma ohittaa kaksi MouseAdapter
menetelmiä: mouseClicked()
ja mouseEntered()
.
Tarvittaessa voit määrittää nimettömälle objektille nimen ja tallentaa sen muuttujaan. Esimerkiksi,
val obj = object: MouseAdapter () (ohita hauska mouseClicked (e: MouseEvent) (//…) ohittaa hauska mouseEntered (e: MouseEvent) (//…))
Esimerkki: Kotlin Object Expression
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() )
Kun suoritat ohjelmaa, tulos on:
Ruoan syöminen. Puhuminen ihmisten kanssa. En rukoile. Olen ateisti.
Tässä nimettömät objektit tallennetaan muuttuvaan ateistiin, joka toteuttaa Person-luokan pray()
menetelmällä ohitetaan.
Jos olet toteuttamassa luokkaa, jolla on konstruktori ilmoittamaan nimettömän objektin, sinun on annettava asianmukaiset konstruktorin parametrit. Esimerkiksi,
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() )
Kun suoritat ohjelmaa, tulos on:
nimi: Jack, ikä: 29 Syöminen ruokaa. Puhuminen ihmisten kanssa. En rukoile. Olen ateisti.