V tem članku boste s pomočjo primerov izvedeli več o deklaracijah objektov (singletoni) in izrazih objektov.
Izjave o objektih
Singleton je objektno usmerjen vzorec, kjer ima lahko razred samo en primerek (objekt).
Na primer, delate z aplikacijo, ki ima zaledje baze podatkov SQL. Ustvariti želite povezovalno področje za dostop do baze podatkov in hkrati uporabiti isto povezavo za vse odjemalce. V ta namen lahko ustvarite povezavo prek enojnega razreda, tako da bo vsak odjemalec dobil isto povezavo.
Kotlin ponuja enostaven način za ustvarjanje enotonov z uporabo funkcije deklaracije objektov. Za to se uporablja ključna beseda objekt.
objekt SingletonExample (… // telo razreda…)
Zgornja koda združuje izjavo razreda in izjavo posameznega primerka SingletonExample razreda.
Deklaracija objekta lahko vsebuje lastnosti, metode itd. Vendar pa ne smejo imeti konstruktorjev (kar je smiselno). Zakaj?
Podobno kot predmeti običajnega razreda lahko tudi s pomočjo .
zapisa pokličete metode in dostopate do lastnosti .
Primer: Izjava o objektu
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") )
Ko zaženete program, bo rezultat:
b = 1 rezultat = 12
Deklaracija objekta lahko podeduje razrede in vmesnike na podoben način kot običajni razredi.
Enojni vbrizg in vbrizgavanje odvisnosti
Izjave o objektih so včasih koristne. Niso pa idealni v velikih sistemih programske opreme, ki sodelujejo z mnogimi drugimi deli sistema.
Priporočeno branje: Vzorec vbrizgavanja odvisnosti in vzorec oblikovanja posameznih modelov
Kotlin objekt Izrazi
Ključno besedo object lahko uporabimo tudi za ustvarjanje predmetov anonimnega razreda, znanega kot anonimni predmeti. Uporabljajo se, če morate ustvariti predmet rahlega spreminjanja nekega razreda ali vmesnika, ne da bi zanj razglasili podrazred. Na primer
window.addMouseListener (objekt: MouseAdapter () (preglasitev zabavnega mouseClicked (e: MouseEvent) (//…) preglasitev zabavnega mouseEntered (e: MouseEvent) (// …)))
(Primer je povzet z uradne strani Dokumenti Kotlin.)
Tu je anonimni objekt razglašen za razširitev razreda MouseAdapter. Program preglasi dve MouseAdapter
metodi: mouseClicked()
in mouseEntered()
.
Po potrebi lahko anonimnemu predmetu dodelite ime in ga shranite v spremenljivko. Na primer
val obj = objekt: MouseAdapter () (preglasitev zabavnega mouseClicked (e: MouseEvent) (// …) preglasitev zabavnega mouseEntered (e: MouseEvent) (// …))
Primer: Kotlinov izraz predmeta
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() )
Ko zaženete program, bo rezultat:
Uživanje hrane. Pogovor z ljudmi. Ne molim. Sem ateist.
Tu je anonimni objekt shranjen v spremenljivki ateist, ki implementira razred osebe z pray()
metodo.
Če izvajate razred, ki ima konstruktor za razglasitev anonimnega predmeta, morate predati ustrezne parametre konstruktorja. Na primer
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() )
Ko zaženete program, bo rezultat:
ime: Jack, starost: 29 Uživanje hrane. Pogovor z ljudmi. Ne molim. Sem ateist.