3.1 Tunggal

Singleton minangka pola desain umum sing njamin yen aplikasi siji-thread bakal duwe conto siji saka sawetara kelas, lan menehi titik akses global kanggo conto iki.

Singleton

Asring banget, programer anyar seneng nglumpukake metode sarana menyang sawetara kelas statis - kelas sing mung ngemot metode statis. Pendekatan iki nduweni sawetara kekurangan - contone, sampeyan ora bisa ngirim referensi menyang obyek kelas kasebut, cara kasebut angel dites, lan liya-liyane.

Minangka alternatif, solusi kelas singleton diusulake: kelas sing mung bisa duwe siji obyek. Nalika nyoba nggawe obyek iki, iku mung digawe yen durung ana, digunakake referensi kanggo Kayata wis ana bali.

Penting yen sampeyan bisa nggunakake conto kelas, amarga ing akeh kasus kasedhiya fungsi sing luwih akeh. Contone, kelas iki bisa ngleksanakake sawetara antarmuka lan obyek bisa liwati kanggo cara liyane minangka implementasine saka antarmuka. Apa sing ora bisa ditindakake kanthi cara statis.

Kaluwihan:

  • Metode kaiket kanggo obyek, dudu kelas statis - sampeyan bisa ngliwati obyek kanthi referensi.
  • Cara obyek luwih gampang dites lan dipoyoki.
  • Obyek mung digawe nalika dibutuhake: initialization obyek kesed.
  • Nyepetake peluncuran awal program kasebut yen ana akeh single sing ora dibutuhake kanggo diluncurake.
  • Piyambak bisa diowahi dadi template-strategi utawa sawetara obyek kasebut.

Minus:

  • Dadi luwih angel ngontrol balapan lan telat antar benang.
  • Iku angel kanggo nulis multi-Utas "penyendiri" "saka sirah": akses menyang singleton long-ngadeg, saenipun, ngirim ora mbukak mutex a. Solusi bukti sing luwih apik.
  • Konflik antarane rong utas liwat utas siji sing durung rampung bakal nyebabake wektu tundha.
  • Yen obyek lagi digawe kanggo dangu, wektu tundha bisa ngganggu pangguna utawa ngganggu wektu nyata. Ing kasus iki, luwih apik kanggo nransfer nggawe menyang tataran initialization program.
  • Fitur khusus dibutuhake kanggo tes unit - contone, kanggo nyelehake perpustakaan ing mode "ora sepi" lan ngisolasi tes saka saben liyane.
  • Taktik khusus kanggo nguji program sing wis rampung dibutuhake, amarga malah konsep "peluncuran paling gampang" ilang, amarga kemampuan peluncuran gumantung saka konfigurasi.

3.2 Pabrik [Metode]

Cara pabrik minangka pola desain umum sing nyedhiyakake subclass (kelas-waris) kanthi antarmuka kanggo nggawe conto kelas tartamtu. Ing wektu nggawe, keturunan bisa nemtokake kelas sing bakal digawe.

Ing tembung liyane, cithakan iki utusan nggawe obyek kanggo turunane kelas induk. Iki ngidini sampeyan nggunakake ora kelas konkrit ing kode program, nanging kanggo ngapusi obyek abstrak ing tingkat sing luwih dhuwur.

Metode Pabrik

Pola iki nemtokake antarmuka kanggo nggawe obyek, nanging ninggalake subclass kanggo mutusake kelas sing bakal didhasarake obyek kasebut. Cara pabrik ngidini kelas kanggo utusan nggawe subclass. Digunakake nalika:

  • kelas ora ngerti ing advance kang obyek kang subclasses perlu kanggo nggawe.
  • kelas dirancang supaya obyek sing digawe ditemtokake dening subclasses.
  • kelas delegasi tanggung jawab kanggo siji saka sawetara subclass helper, lan iku ngrancang kanggo nemtokake kang kelas njupuk tanggung jawab iki.

3.3 Pabrik Abstrak

Pabrik abstrak minangka pola desain umum sing nyedhiyakake antarmuka kanggo nggawe kulawarga obyek sing gegandhengan utawa saling gumantung tanpa nemtokake kelas konkrit.

Pola kasebut ditindakake kanthi nggawe Pabrik kelas abstrak, yaiku antarmuka kanggo nggawe komponen sistem (contone, kanggo antarmuka jendhela, bisa nggawe jendhela lan tombol). Banjur kelas ditulis sing ngleksanakake antarmuka iki.

Pabrik abstrak

Iki digunakake ing kasus nalika program kasebut kudu bebas saka proses lan jinis obyek anyar sing digawe. Yen perlu kanggo nggawe kulawarga utawa klompok obyek sing gegandhengan, ora kalebu kamungkinan nggunakake simultaneous obyek saka macem-macem set iki ing konteks padha.

Kakuwatan:

  • ngisolasi kelas tartamtu;
  • nyederhanakake panggantos kulawarga produk;
  • njamin kompatibilitas produk.

Contone, program sampeyan bisa digunakake karo sistem file. Banjur kanggo nggarap Linux sampeyan butuh LinuxFile, LinuxDirectory, LinuxFileSystem objects. Lan kanggo nggarap Windwos, sampeyan butuh kelas WindowsFile, WindowsDirectory, WindowsFileSystem.

Kelas Path, sing digawe liwat Path.of (), mung kaya ngono. Path dudu kelas, nanging antarmuka, lan nduweni implementasi WindowsPath lan LinuxPath. Lan obyek apa sing bakal digawe didhelikake saka kode sampeyan lan bakal diputusake nalika runtime.

3.4 Prototipe

Prototipe minangka pola desain generatif.

Pola iki nemtokake jinis obyek sing digawe nggunakake conto prototipe lan nggawe obyek anyar kanthi nyalin prototipe iki. Iku ngijini sampeyan kanggo njaluk adoh saka implementasine lan tindakake prinsip "programming liwat antarmuka".

Antarmuka / kelas abstrak ing ndhuwur hirarki kasebut minangka jinis bali, lan kelas turunan bisa ngganti pewaris sing ngetrapake jinis iki ing kana. Cukup, iki minangka pola nggawe obyek kanthi kloning obyek liyane tinimbang nggawe liwat konstruktor.

Prototipe

Pola kasebut digunakake kanggo:

  • Nyingkiri gaweyan tambahan kanggo nggawe obyek ing cara standar (tegese nggunakake konstruktor a, wiwit ing kasus iki konstruktor saka hirarki leluhur kabeh obyek uga bakal disebut), nalika iki prohibitively larang kanggo aplikasi.
  • supaya ora oleh warisan nitahake obyek ing aplikasi klien, minangka pola pabrik abstrak.

Gunakake pola desain iki nalika program sampeyan ora peduli carane nggawe, nyusun, lan menehi produk:

  • kelas instantiated ditemtokake ing wektu mbukak, contone, nggunakake loading dinamis;
  • sampeyan pengin ngindhari hierarki kelas utawa pabrik sing sejajar karo hierarki kelas produk;
  • kedadean kelas bisa ing salah siji saka sawetara negara beda. Bisa uga luwih trep kanggo nyetel jumlah prototipe sing cocog lan kloning, tinimbang nggawe kelas kanthi manual ing negara sing cocog saben wektu.