Bu makalede, örnekler yardımıyla nesne bildirimleri (tekli tonlar) ve nesne ifadeleri hakkında bilgi edineceksiniz.
Nesne Bildirimleri
Singleton, bir sınıfın yalnızca bir örneğe (nesneye) sahip olabileceği nesne yönelimli bir kalıptır.
Örneğin, SQL veritabanı arka ucuna sahip bir uygulama çalışıyorsunuz. Tüm istemciler için aynı bağlantıyı yeniden kullanırken veritabanına erişmek için bir bağlantı havuzu oluşturmak istiyorsunuz. Bunun için, her istemcinin aynı bağlantıyı alması için tekil sınıf üzerinden bağlantı oluşturabilirsiniz.
Kotlin, nesne bildirimi özelliğini kullanarak tekil oluşturmanın kolay bir yolunu sağlar. Bunun için nesne anahtar sözcüğü kullanılır.
nesne SingletonExample (… // sınıf gövdesi…)
Yukarıdaki kod, bir sınıf bildirimini ve sınıfın tek bir SingletonExample örneğinin bildirimini birleştirir.
Bir nesne bildirimi, özellikler, yöntemler vb. İçerebilir. Ancak, yapıcılara sahip olmalarına izin verilmez (bu mantıklıdır). Neden?
Normal bir sınıftaki nesnelere benzer şekilde, .
gösterimi kullanarak yöntemleri çağırabilir ve özelliklere erişebilirsiniz .
Örnek: Nesne Bildirimi
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") )
Programı çalıştırdığınızda, çıktı:
b = 1 sonuç = 12
Nesne bildirimi, normal sınıflar gibi benzer bir şekilde sınıflardan ve arabirimlerden miras alabilir.
Singletons ve Bağımlılık Enjeksiyonu
Nesne bildirimleri bazen yararlı olabilir. Ancak, sistemin diğer pek çok parçasıyla etkileşime giren büyük yazılım sistemlerinde ideal değildirler.
Önerilen Okuma: Bağımlılık Enjeksiyonu ve Tekli Tasarım modeli
Kotlin nesne İfadeleri
Object anahtar sözcüğü, anonim nesneler olarak bilinen anonim bir sınıfın nesnelerini oluşturmak için de kullanılabilir. Bir alt sınıf bildirmeden, bazı sınıf veya arabirimde küçük bir değişikliğe sahip bir nesne oluşturmanız gerektiğinde kullanılırlar. Örneğin ,
window.addMouseListener (object: MouseAdapter () (eğlenceli mouseClicked'i geçersiz kılın (e: MouseEvent) (//…) eğlenceli mouseEntered (e: MouseEvent) (//…)))
(Örnek, resmi Kotlin dokümanları sayfasından alınmıştır.)
Burada MouseAdapter sınıfını genişleten anonim bir nesne bildirilmiştir. Program iki MouseAdapter
yöntemi geçersiz kılar : mouseClicked()
ve mouseEntered()
.
Gerekirse, anonim nesneye bir ad atayabilir ve bir değişkende saklayabilirsiniz. Örneğin,
val obj = object: MouseAdapter () (eğlenceli mouseClicked'i geçersiz kıl (e: MouseEvent) (//…) eğlence mouseEntered (e: MouseEvent) (//…))
Örnek: Kotlin Nesne İfadesi
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() )
Programı çalıştırdığınızda, çıktı:
Yemek yemek. İnsanlarla konuşmak. Ben dua etmiyorum Ben bir ateistim.
Burada anonim nesne, pray()
metotla Person sınıfını uygulayan ateist değişkeninde saklanır .
Anonim bir nesneyi bildirmek için bir yapıcıya sahip bir sınıf uyguluyorsanız, uygun yapıcı parametrelerini iletmeniz gerekir. Örneğin,
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() )
Programı çalıştırdığınızda, çıktı:
isim: Jack, yaş: 29 Yemek yiyor. İnsanlarla konuşmak. Ben dua etmiyorum Ben bir ateistim.