Property dan Delegate

14.5 Property dan Delegate

Saat m end efinisikan delegate, anda harus memperhatikan kapan delegate tersebut dibuat. Kat akanlah, proses pembuatan delegate terseb ut memakan waktu dalam eksekusi pr ogram anda. Dalam situasi dimana anda tahu bahwa klien tida k akan memanggil me thod callback, kita dapat menunda pembuatan delegate terse but sampai benar-b enar diperlukan dengan menggunakan property. Contoh berikut ini menggamba rkan penggunaan property read-only untuk memb uat instance dari delegate.

us i ng Sy s t em; us i ng Sy s t em. Col l ec t i ons ; cl as s k onek s i DB {

pr ot ec t ed s t at i c i nt Nmr Konek s i Ber i k ut = 1; pr ot ec t ed s t r i ng namaKonek s i ; publ i c s t r i ng NamaKonek s i

{ get

{ r et ur n namaKonek s i ;

publ i c k onek s i DB( ) {

namaKonek s i = " Konek s i Dat abas e " + k onek s i DB. Nmr Konek s i Ber i k ut ++;

c l as s DBManager { pr ot ec t ed Ar r ay Li s t k onek s i Ak t i f ; publ i c DBManager ( ) {

k onek s i Ak t i f = new Ar r ay Li s t ( ) ;

f or ( i nt i = 1; i < 6; i ++) { k onek s i Ak t i f . Add( new k onek s i DB( ) ) ;

} publ i c d el egat e v oi d EnumKonek s i Cal l bac k (

k onek s i DB k onek s i ) ; publ i c v oi d EnumKonek s i ( EnumKonek s i Cal l bac k c al l bac k ) {

f or eac h( k onek s i DB k onek s i in k onek s i Ak t i f ) {

c al l bac k ( k onek s i ) ;

cl as s Del egat ePr oper t y {

v oi d pr i nt Konek s i ( k onek s i DB k onek s i ) { Co ns ol e. Wr i t eLi ne( " [ Del egat ePr oper t y . Pr i nt Konek s i ]

{ 0} " , k onek s i . NamaKonek s i ) ;

publ i c DBManager . EnumKonek s i Cal l bac k Pr i nt Konek s i { get

{ r et ur n new DBManager . EnumKonek s i Cal l bac k ( pr i nt Konek s

i); }

publ i c s t at i c v oi d Mai n( ) {

Del egat ePr oper t y app = new Del egat ePr oper t y ( ) ;

DBManager dbManager = new DBManager ( ) ; Cons ol e. Wr i t eLi ne( " [ Mai n] Memanggi l EnumKonek s i "

+ " - mas uk k an del egat e" ) ;

dbManager . EnumKonek s i ( app. Pr i nt Konek s i ) ; Cons ol e. ReadLi ne( ) ;

Seperti yang anda lihat, yang perlu dilakukan adalah: ƒ Definisikan method yang akan be rlaku sebagai delegate receiver dengan access modifier yang membatasi akses eksternal. ƒ Definisikan property get yang memberikan suatu instance delegate untuk method

receiver. Ketika diinvoke, property ini menghasilkan obyek delegate menggunakan method receiver.

ƒ Panggil method yang menggunakan obyek delegate sebagai parameter.

P elajaran apa yang dapat anda peroleh dari bagian ini? Ternyata property dapat m embantu anda untuk membuat perantara yang lebih elegant untuk membuat instance

d ari obyek delegate.