Šajā rakstā jūs uzzināsit par objektu deklarācijām (vienskaitļiem) un objektu izteiksmēm, izmantojot piemērus.
Objekta deklarācijas
Singleton ir uz objektu orientēts modelis, kurā klasei var būt tikai viens gadījums (objekts).
Piemēram, jūs strādājat lietojumprogrammā ar SQL datu bāzes aizmuguri. Jūs vēlaties izveidot savienojumu kopu, lai piekļūtu datu bāzei, vienlaikus atkārtoti izmantojot to pašu savienojumu visiem klientiem. Lai to izdarītu, jūs varat izveidot savienojumu, izmantojot vienklases klasi, lai katrs klients iegūtu tādu pašu savienojumu.
Kotlins nodrošina vienkāršu veidu, kā izveidot vieniniekus, izmantojot objekta deklarēšanas funkciju. Tam tiek izmantots objekta atslēgvārds.
objekts SingletonExample (… // klases ķermenis …)
Iepriekš minētais kods apvieno klases deklarāciju un deklarāciju par vienu klases SingletonExample piemēru.
Objekta deklarācijā var būt īpašības, metodes un tā tālāk. Tomēr viņiem nav atļauts būt konstruktoriem (kas ir jēga). Kāpēc?
Līdzīgi kā parastās klases objektiem, izmantojot piezīmi, varat izsaukt metodes un piekļūt rekvizītiem .
.
Piemērs: objekta deklarācija
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") )
Palaidot programmu, izeja būs:
b = 1 rezultāts = 12
Objekta deklarācija var mantot no klasēm un saskarnēm līdzīgi kā parastās klases.
Singletons un atkarības injekcija
Dažreiz objektu deklarācijas var būt noderīgas. Tomēr tie nav ideāli lielās programmatūras sistēmās, kas mijiedarbojas ar daudzām citām sistēmas daļām.
Ieteicamā literatūra: Atkarības injekcijas un Singletona dizaina modelis
Kotlina objekta izteiksmes
Objekta atslēgvārdu var izmantot arī, lai izveidotu anonīmās klases objektus, kas pazīstami kā anonīmi objekti. Tie tiek izmantoti, ja jums ir jāizveido objekts ar nelielu klases vai saskarnes modifikāciju, nedeklarējot tam apakšklasi. Piemēram ,
window.addMouseListener (objekts: MouseAdapter () (ignorēt jautro mouseClicked (e: MouseEvent) (//…) ignorēt jautro mouseEntered (e: MouseEvent) (//…)))
(Piemērs ņemts no oficiālās Kotlin dokumentu lapas.)
Šeit tiek pasludināts, ka anonīms objekts paplašina MouseAdapter klasi. Programma ignorē divas MouseAdapter
metodes: mouseClicked()
un mouseEntered()
.
Ja nepieciešams, anonīmam objektam varat piešķirt nosaukumu un saglabāt to mainīgajā. Piemēram,
val obj = object: MouseAdapter () (ignorēt jautro mouseClicked (e: MouseEvent) (//…) ignorēt fun mouseEntered (e: MouseEvent) (//…))
Piemērs: Kotlina objekta izteiksme
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() )
Palaidot programmu, izeja būs:
Ēšanas pārtika. Saruna ar cilvēkiem. Es nelūdzu. Es esmu ateists.
Šeit anonīms objekts tiek glabāts mainīgā ateistā, kurš īsteno Personas klasi ar pray()
metodi.
Ja jūs ieviešat klasi, kurai ir konstruktors, lai deklarētu anonīmu objektu, jums jānodod atbilstoši konstruktora parametri. Piemēram,
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() )
Palaidot programmu, izeja būs:
vārds: Džeks, vecums: 29 Ēšanas ēdiens. Saruna ar cilvēkiem. Es nelūdzu. Es esmu ateists.