JavaRush /Blog Jawa /Random-JV /Pola lan Singleton - kanggo saben wong sing nemoni pisana...

Pola lan Singleton - kanggo saben wong sing nemoni pisanan

Diterbitake ing grup
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 Singletonkanthi implementasine kesed. Siswa sing sepisanan krungu babagan iki Singletonlangsung duwe pitakonan: apa pola, kenapa perlu, pola apa, Singletonlan pungkasane, implementasine kesed apa iki. Ayo miwiti mangsuli kanthi urutan: Pola lan Singleton - kanggo saben wong sing nemoni pisanan - 1

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.
Pola lan Singleton - kanggo saben wong sing nemoni pisanan - 2
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 Singletoniki 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 lan Singleton - kanggo saben wong sing nemoni pisanan - 3
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:
Pola lan Singleton - kanggo saben wong sing nemoni pisanan - 4

Akhire pola Singleton

Singletonnuduhake 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:
  1. 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.

  2. 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 Singletondibutuhake, 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 Singletonbakal 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):
Pola lan Singleton - kanggo saben wong sing nemoni pisanan - 5
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 SingletonJawa 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; //#1
}
#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(){} // #2
}
#3 . - Nyatakake cara nggawe statis sing bakal digunakake kanggo entuk singleton:
public class LazyInitializedSingleton {
    private static LazyInitializedSingleton instance;
        private LazyInitializedSingleton(){}
        public static LazyInitializedSingleton getInstance(){ // #3
        if(instance == null){		//if the object has not been created yet
            instance = new LazyInitializedSingleton();	//create a new object
        }
        return instance;		// return the previously created object
    }
}
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:
  1. Praktik Paling Apik Pola Desain Tunggal Jawa kanthi Tuladha
  2. Pola Desain
  3. Singleton sing bener ing Jawa
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION