CodeGym /Blog Jawa /Acak /Pola lan Singleton ing Jawa
John Squirrels
tingkat
San Francisco

Pola lan Singleton ing Jawa

Diterbitake ing grup
Artikel iki ditujokake kanggo sapa wae sing, kanggo pisanan, nemoni konsep pola desain, wis krungu istilah singleton , utawa piye wae ngetrapake pola singleton nanging ora ngerti apa sing kedadeyan. Sugeng rawuh! Siswa CodeGym nemoni pola desain kanggo pisanan ing Level 15, nalika kapten kanthi ora sengaja njaluk dheweke "nguatake" pemahaman kanthi ngetrapake pola Java Singleton kanthi implementasine malas. Siswa krungu bab pola singleton kanggo pisanan langsung duwe akeh pitakonan: apa ing donya iku pola desain? Apa sebabe kita butuh? Apa sing singleton ? Lan pungkasanipun, apa implementasine kesed? Ayo wangsulana pitakon-pitakon iki kanthi urut.

Apa pola desain ing donya?

Aku pracaya sejarah sethitik kanggo njawab pitakonan iki karo pangerten paling. Ana papat penulis program sing misuwur (Erich Gamma, John Vlissides, Ralph Johnson, lan Richard Helm) sing nggawe ide sing menarik. Dheweke ngerteni manawa pangembangan piranti lunak asring mbutuhake dheweke ngrampungake masalah sing padha lan nulis kode kanthi cara sing padha. Dadi dheweke mutusake kanggo njlèntrèhaké pola khas sing asring kudu digunakake ing pemrograman berorientasi obyek. Buku kasebut diterbitake ing taun 1994 kanthi judhul Design Patterns: Elements of Reusable Object-Oriented Software. Jeneng buku kasebut dadi dawa banget lan wong-wong wiwit mung nyebat buku kasebut dening Gang of Four. Edisi pisanan kalebu 23 pola. Banjur, puluhan pola liyane ditemokake.
Pola desain minangka solusi standar kanggo masalah umum.
Lan pola singleton mung salah sijine.

Napa kita butuh pola desain?

Sampeyan bisa program tanpa ngerti pola: sawise kabeh, dening Level 15, sampeyan wis nulis atusan mini-program ing CodeGym tanpa ngerti sing padha ana. Iki nuduhake manawa pola desain minangka alat sing panggunaane mbedakake master saka amatir: Pola desain nggambarake cara ngatasi masalah sing khas. Iki tegese ngerti pola ngirit wektu sampeyan. Kanthi cara kasebut, padha karo algoritma. Contone, sampeyan bisa nggawe algoritma ngurutake dhewe karo blackjack lan nomerlan nglampahi akèh wektu kanggo nglakoni, utawa sampeyan bisa ngleksanakake siji sing wis dingerteni lan diterangake kanggo dangu. Padha bener karo pola desain. Kajaba iku, kanthi pola desain, kode dadi luwih standar, lan nalika nggunakake pola sing cocog, sampeyan ora bakal nggawe kesalahan, amarga pitfalls umum pola kasebut wis diidentifikasi lan diilangi. Ing ndhuwur kabeh, kawruh babagan pola mbantu para programer luwih ngerti saben liyane. Sampeyan mung bisa ngucapake jeneng pola tinimbang nyoba menehi panjelasan sing dawa kanggo kanca programer. Ringkesan, pola desain mbantu sampeyan:
  • ora reinvent setir, nanging nggunakake solusi standar;
  • kode standar;
  • standarisasi terminologi;
Kanggo ngrampungake bagean iki, kita nyathet yen kabeh pola desain bisa dipérang dadi telung klompok gedhe: Pola lan singleton - kanggo saben wong sing nemoni pisanan - 2

Pungkasan, pola singleton

Singleton minangka pola kreasi . Pola iki mesthekake yen mung ana siji conto kelas lan nyedhiyakake jalur akses global kanggo obyek iki. Saka katrangan kasebut, kudu jelas yen pola iki kudu ditrapake ing rong kasus:
  1. nalika program sampeyan mbutuhake ora luwih saka siji obyek saka kelas tartamtu kudu digawe. Contone, game komputer bisa uga duwe kelas Pahlawan lan mung siji obyek Pahlawan sing nggambarake pahlawan tunggal ing game kasebut.

  2. nalika sampeyan kudu nyedhiyani titik kanggo akses global kanggo obyek. Ing tembung liyane, sampeyan kudu nggawe obyek kasedhiya saka ngendi wae ing program. Sayange, ora cukup mung nggawe variabel global, amarga ora dilindhungi nulis: sapa wae bisa ngganti nilai variabel kasebut, saengga titik akses global obyek bisa ilang. Iki sifat Singleton perlu, Contone, nalika sampeyan duwe obyek sing dianggo karo database, lan sampeyan kudu ngakses database saka macem-macem bagean saka program. A Singleton bakal mesthekake yen ora ana sing nulis kode sing ngganti conto sing digawe sadurunge.
Dadi Singleton nyukupi kabutuhan loro kasebut: mung kudu ana siji saka obyek tartamtu ing program kasebut lan kudu ana akses global. Ing conto ing Level 15, kapten njaluk sampeyan ngetrapake pola iki kanggo tugas ing ngisor iki:
  1. Golek conto Singleton karo initialization puguh.

  2. Nggawe telung kelas tunggal - Srengenge, Bulan, Bumi - ing file sing kapisah nggunakake prinsip sing padha.

  3. ngleksanakakePlanetantarmuka ing kelas Sun , Bulan lan Bumi .

  4. Ing blok statis saka kelas Solution nelpon ingreadKeyFromConsoleAndInitPlanetcara.

  5. NgleksanakakereadKeyFromConsoleAndInitPlanetfungsi metode:

    • 5.1. Waca siji parameter String saka console

    • 5.2. Yen parameter padha karo salah siji sakaPlanetkonstanta antarmuka, nggawe obyek Planet sing cocog .

Sawise maca kahanan tugas kasebut kanthi teliti, kita bisa ndeleng kanthi jelas kenapa Singleton dibutuhake ing kene. Pancen, kita dijaluk nggawe conto saben kelas ing ngisor iki: Srengenge , Bulan , Bumi . Iku ndadekake akal kanggo nganggep yen kita kudu nggawe ora luwih saka siji Srengenge / Bulan / Bumi. Yen ora, kita entuk kahanan sing ora masuk akal, kajaba sampeyan nulis versi Star Wars. Ngleksanakake pola Singleton ing Jawa ing telung langkah Ing Jawa, prilaku Singleton ora bisa dileksanakake nggunakake konstruktor biasa, amarga konstruktor tansah ngasilake obyek anyar. Mulane, kabeh implementasine saka Singletongodhok mudhun kanggo ndhelikake konstruktor, nggawe cara statis umum sing ngontrol umur obyek singleton, lan "ngrusak" kabeh obyek mentas katon. Yen Singleton diakses, kudu nggawe obyek anyar (yen siji durung ana ing program), utawa bali sing wis ana. Kanggo ngrampungake iki:
  1. Sampeyan kudu menehi kelas lapangan statis pribadi sing nyimpen obyek siji:

    
    public class LazyInitializedSingleton {
    	private static LazyInitializedSingleton instance; // #1
    }
    
  2. Nggawe konstruktor (standar) pribadi. Iki tegese ora bisa diakses ing njaba kelas lan ora bakal 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 yet been created
                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 yakuwi kanggo mesthekake yen siswa CodeGym teka menyang kontak karo pola iki (lan pola desain ing umum), nuansa saka implementasine singleton luwih Komplek ora bakal diterangake kene. Kita mung nyathet yen, gumantung saka kerumitan program, pola iki bisa uga kudu diresiki. Contone, ing lingkungan multithreaded (ndeleng artikel babagan utas), sawetara utas beda bisa ngakses metode singleton bebarengan, lan kode sing diterangake ing ndhuwur bakal mandheg, amarga saben utas sing kapisah bisa nggawe conto kelas. Akibaté, isih ana sawetara pendekatan sing beda kanggo nggawe singleton sing aman kanggo benang. Nanging iki crita liyane =)

Lan pungkasanipun ... Apa iki initialization puguh sing kapten takon bab?

Inisialisasi kesed uga diarani inisialisasi sing ditundha. Iki minangka trik pemrograman ing ngendi operasi intensif sumber daya (lan nggawe obyek minangka operasi intensif sumber daya) ditindakake kanthi dikarepake tinimbang sadurunge. Dadi, apa sing kedadeyan ing kode Singleton Java? Ing tembung liya, obyek kita digawe nalika diakses, ora sadurunge. Sampeyan ora kudu nganggep yen initialization males kaya-kaya diikat karo pola Singleton . Inisialisasi malas uga digunakake ing pola desain kreasi liyane, kayata Proxy lan Metode Pabrik, nanging iki uga crita liyane =)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION