Kotlin Object (Object Expressions -Object Declarations ve Compain Object)
Object Declarations
Kotlin ile singleton yapısını kullanmak istediğimiz de object keywordu ile başlayıp dilediğimiz isimlendirmeyi yaptıktan sonra süslü parantezler(body) içerisinde değişken ve parametre tanımlamaları yaparız. Class yapısında türetilen obje deki değişiklikler sadece o sınıf içerisinde geçerli olurken, Object Declarations ile yapacağımız değişiklikler diğer tüm kullanımlarda etkili olacaktır. Farklı class’lar da yapılan değişikliler tüm çağırımlardan okunabilecektir.
Singleton
Singleton memory de sadece bir tane obje türetmemize olanak sağlar birden fazla obje oluşturmamıza izin vermez. Singleton uygulama ayakta olduğu sürece garbage collector tarafından silinmez bir alan oluşturur. Bu alan doğru ve verimli kullanılmadığı takdirde memory hatası alırız. Bu yüzden Singleton kullanıma göre bir patent veya antipatentdir.
Object Expressions
Open olan bir class dan türetilen instance’a, Interface olan bir classı implement etmek istediğimiz de Object Expression kullanırız. Şöyle bir senaryo düşünün bir şirkette var olan class’a bir interface implement etmemiz halinde yapıda değişiklikler oluşacaktır. Örneğin interface’de tanımlı olan body’siz fonksiyonları class içerisinde zorunlu override etmemiz gerekecek. Bu gibi durumlarda classın instance’ı oluşturulurken object keywordu ile dilediğimiz interface’i sadece o instance için implement edebiliriz.
Compain Object
Class içerisinde singleton yapısı elde etmek istediğimizde compain object kullanabiliriz. Class içerisinde const(değiştirilemez) değişken tanımlayamazken compain object blokları içerisinde const tanımlayabiliriz. Compain Object içerisindeki değişken ve fonksiyonlara ulaşırken instance oluşturmadan “classAdi. “ değişken veya fonksiyon adı ile ulaşabiliriz. Compain object içerisindeki değişken ve fonksiyonlara top class dan ulaşılırken, class içerisindeki değişken ve fonksiyonlara compain object içerisinden ulaşılamaz.
Kotlin ile kullanılabilecek object çeşitlerini anlatmaya çalıştığım yazımın sonuna geldik. Umarım faydalı olmuştur. Keyifli Günler..