Artikel iki ditujokake kanggo wong-wong sing pisanan nemoni konsep pola, krungu babagan
Singleton
'e, utawa piye wae digawe, nanging isih ora ngerti apa-apa. Sugeng rawuh! Siswa JavaRush nemoni pola kanggo pisanan ing level 15, nalika ora dikarepke tutup njaluk "ndandani" lan ngetrapake pola
Singleton
kanthi implementasine kesed. Siswa sing sepisanan krungu babagan iki
Singleton
langsung duwe pitakonan: apa pola, kenapa perlu, pola apa,
Singleton
lan pungkasane, implementasine kesed apa iki. Ayo miwiti mangsuli kanthi urutan:
Apa pola kasebut?
Kanggo pangerten sing luwih apik, aku mikir kudu njawab pitakonan iki saka sejarah. Antarane programer ana papat penulis misuwur: Erich Gamma, Richard Helm, Ralph Johnson lan John Vlissides, sing teka munggah karo idea menarik.
Dheweke weruh yen nalika nulis program, dheweke kudu ngrampungake kira-kira masalah sing padha lan nulis kode kanthi struktur sing padha. Mulane, padha mutusaké kanggo njlèntrèhaké ing wangun pola pola khas sing asring digunakake ing program object-oriented. Buku kasebut diterbitake ing taun 1995 kanthi judhul
"Teknik Desain Berorientasi Objek. Pola Desain " . Judhul buku kasebut dadi dawa banget, lan mung dikenal kanthi jeneng
The Book of the Gang of Four . Ing edisi pisanan, 23 pola diterbitake, lan puluhan liyane ditemokake. Dadi, njawab pitakonan ing paragraf iki,
"Apa pola?" , ayo ngringkes mung sawetara tembung:
Pola minangka solusi standar kanggo masalah umum. |
Lan
Singleton
iki mung salah sawijining pola kasebut.
Napa kita butuh pola (pola desain)
Sampeyan bisa program tanpa ngerti pola; sampeyan bisa verifikasi iki mung kanthi nyadari kasunyatan manawa ing tingkat 15th ing JavaRush sampeyan wis nulis atusan program mini tanpa ngerti apa-apa babagan orane. Iki nuduhake manawa pola minangka jinis alat, sing mbedakake master saka amatir:
Pola kasebut nggambarake carane ngrampungake salah sawijining masalah sing khas. Akibaté, ngerti pola ngirit wektu. Analogi bisa digawe nganggo algoritma. Contone, sampeyan bisa teka munggah karo algoritma ngurutake dhewe
karo blackjack lan nomer lan nglampahi akeh wektu ing, utawa sampeyan bisa nggunakake siji sing wis diterangake dangu kepungkur lan ngleksanakake. Iku padha karo pola. Kajaba iku, kanthi nggunakake pola, kode kasebut dadi luwih standar, lan nalika nggunakake pola sing bener, sampeyan bakal cenderung nggawe kesalahan, amarga wis diramalake lan diilangi ing pola iki. Inggih, plus kabeh, kawruh saka pola ngidini programer kanggo luwih ngerti saben liyane. Cukup ngucapake jeneng cithakan, tinimbang nyoba nerangake karo kanca-kanca programer apa sing dikarepake.
Dadi, kanggo ngringkes, pola desain mbantu:
- ora reinvent setir, nanging nggunakake solusi standar;
- kode standar;
- standarisasi terminologi;
|
Ing kesimpulan saka bagean iki, kita nyathet yen kabeh macem-macem pola bisa disederhanakake dadi telung klompok gedhe:
Akhire pola Singleton
Singleton
nuduhake
pola generatif . Terjemahan harfiah iku loner. Pola iki mesthekake yen kelas mung nduweni siji obyek (siji conto kelas) lan titik akses global diwenehake kanggo obyek kasebut. Saka katrangan kasebut kudu jelas yen pola iki kudu digunakake ing rong kasus:
- nalika ora luwih saka siji obyek saka sembarang kelas kudu digawe ing program. Contone, ing game komputer sampeyan duwe kelas "Karakter", lan kelas iki kudu mung siji obyek sing nggambaraké karakter piyambak.
- nalika sampeyan kudu nyedhiyani titik akses global kanggo obyek kelas. Ing tembung liya, sampeyan kudu nggawe manawa obyek kasebut diarani saka ngendi wae ing program kasebut. Lan, sayangé, iki ora cukup mung nggawe variabel global, amarga ora dilindhungi nulis lan sapa wae bisa ngganti nilai variabel iki lan titik akses global menyang obyek bakal ilang. Sifat-sifat kasebut
Singleton
dibutuhake, contone, nalika sampeyan duwe obyek saka kelas sing bisa digunakake karo database, lan sampeyan kudu database bisa diakses saka macem-macem bagean saka program. Lan Singleton
bakal njamin yen ora ana kode liyane sing ngganti conto kelas sing digawe sadurunge.
Loro masalah iki ditanggulangi kanthi
Singleton
: mung kudu ana siji obyek ing program kasebut lan kudu ana akses global. Ing conto ing level 15, tutup njaluk ngleksanakake pola iki kanggo tugas ing ngisor iki (kene katrangane):
Sawise maca kondisi kasebut kanthi teliti, dadi jelas kenapa persis
Singleton
(Single) dibutuhake ing kene. Sawise kabeh, program njaluk sampeyan nggawe siji obyek saben kelas:
Sun
,
Moon
,
Earth
. Lan iku logis kanggo nganggep sing saben kelas ing program kudu nggawe ora luwih saka siji Sun / Bulan / Bumi, digunakake bakal khayal, kajaba mesthi sampeyan nulis versi dhewe saka Star Wars.
Fitur implementasine Singleton
Jawa ing telung langkah Singleton prilaku ing Jawa ora bisa dipun ginakaken nggunakake konstruktor biasa amarga konstruktor tansah ngasilake obyek anyar. Mulane, kabeh implementasine saka
Singleton
'a teka mudhun kanggo ndhelikake konstruktor lan nggawe cara statis umum sing bakal ngontrol eksistensi obyek siji lan "ngrusak" kabeh obyek mentas katon. Yen
Singleton
'a diarani, kudu nggawe obyek anyar (yen durung ana ing program) utawa bali sing wis digawe. Kanggo nindakake iki:
#1. - Sampeyan kudu nambah kolom statis pribadi menyang kelas sing ngemot obyek siji:
public class LazyInitializedSingleton {
private static LazyInitializedSingleton instance;
}
#2. - Nggawe konstruktor kelas (konstruktor standar) pribadi (supaya akses ditutup ing njaba kelas, mula ora bisa ngasilake obyek anyar):
public class LazyInitializedSingleton {
private static LazyInitializedSingleton instance;
private LazyInitializedSingleton(){}
}
#3 . - Nyatakake cara nggawe statis sing bakal digunakake kanggo entuk singleton:
public class LazyInitializedSingleton {
private static LazyInitializedSingleton instance;
private LazyInitializedSingleton(){}
public static LazyInitializedSingleton getInstance(){
if(instance == null){
instance = new LazyInitializedSingleton();
}
return instance;
}
}
Conto ing ndhuwur rada kikuk, amarga kita mung ndhelikake konstruktor lan menehi cara dhewe tinimbang konstruktor standar. Wiwit artikel iki ngarahake supaya siswa JavaRush bisa kontak karo pola iki (lan pola umume) kanggo pisanan, fitur implementasi Singleton sing luwih rumit ora bakal diwenehake ing kene. Kita mung nyathet yen gumantung saka kerumitan program, panyulingan sing luwih rinci babagan pola iki bisa uga dibutuhake. Contone, ing lingkungan multi-Utas (ndeleng topik Utas), sawetara utas beda bisa bebarengan nelpon metode getter Singleton, lan kode sing diterangake ing ndhuwur bakal mandheg, amarga saben thread individu bakal bisa nggawe macem-macem kedadean saka kelas. sanalika. Mulane, isih ana sawetara pendekatan sing beda kanggo nggawe singleton sing aman Thread sing bener. Nanging iku crita liyane =)
Lan pungkasanipun. Apa Lazy Initialization sing dijaluk tutup ? Lazy Initialization uga diarani Lazy Initialization. Iki minangka teknik pemrograman ing ngendi operasi intensif sumber daya (lan nggawe obyek minangka operasi intensif sumber daya) ditindakake kanthi dikarepake, tinimbang sadurunge. Kang Sejatine apa mengkono ing kode kita
Singleton
'a. Ing tembung liyane, obyek kita digawe ing wayahe diakses, lan ora ing advance. Sampeyan kudu ora dianggep yen konsep initialization males piye wae disambungake karo
Singleton
'om. Lazy initialization uga digunakake ing pola desain generatif liyane, contone ing Proxy lan Factory Method, nanging crita liyane =)
Sumber ing ngisor iki digunakake kanggo nyiapake artikel:
- Praktik Paling Apik Pola Desain Tunggal Jawa kanthi Tuladha
- Pola Desain
- Singleton sing bener ing Jawa
GO TO FULL VERSION