
Pola pergi
Koleksi desain idiomatik & pola aplikasi yang dikuratori untuk bahasa GO.
Garpu dari TMRTS/GO-Patterns tetapi bergabung dengan garpu mengagumkan lainnya. bisa menggunakan pola-dalam-contoh
Repo gabungan
- Gabungan: https://github.com/nynicg/go-patterns
- Gabungan: https://github.com/weichou1229/go-patterns
- Gabungan: https://github.com/jianhan/go-patterns
- Gabungan: https://github.com/sakari-ai/go-patterns
- Gabungan : https: //github.com/restudy/go-patterns
Pola kreasi
| Pola | Keterangan | Status |
|---|
| Pabrik Abstrak | Menyediakan antarmuka untuk menciptakan keluarga objek yang diolah | ✔ |
| Pembangun | Membangun objek yang kompleks menggunakan objek sederhana | ✔ |
| Metode pabrik | Tahan instantiasi suatu objek ke fungsi khusus untuk membuat instance | ✔ |
| Kumpulan objek | Instantiates dan memelihara sekelompok objek instance dari tipe yang sama | ✔ |
| Singleton | Membatasi instantiasi jenis ke satu objek | ✔ |
Pola Struktural
| Pola | Keterangan | Status |
|---|
| Menjembatani | Memisahkan antarmuka dari implementasinya sehingga keduanya dapat bervariasi secara mandiri | ✔ |
| Gabungan | Merangkum dan menyediakan akses ke sejumlah objek yang berbeda | ✔ |
| Penghias | Menambahkan perilaku pada suatu objek, secara statis atau dinamis | ✔ |
| Fasad | Menggunakan satu jenis sebagai API untuk sejumlah lainnya | ✔ |
| Kelas terbang | Menggunakan kembali contoh objek yang ada dengan keadaan serupa/identik untuk meminimalkan penggunaan sumber daya | ✔ |
| Proxy | Memberikan pengganti untuk suatu objek untuk mengendalikan tindakannya | ✔ |
| Adaptor | Memberikan pengganti untuk suatu objek untuk mengendalikan tindakannya | ✔ |
Pola perilaku
| Pola | Keterangan | Status |
|---|
| Rantai tanggung jawab | Menghindari menggabungkan pengirim ke penerima dengan memberikan lebih dari sekadar objek kesempatan untuk menangani permintaan | ✔ |
| Memerintah | Menggabungkan perintah dan argumen untuk menelepon nanti | ✔ |
| Penengah | Menghubungkan objek dan bertindak sebagai proxy | ✔ |
| Kenang -kenangan | Menghasilkan token buram yang dapat digunakan untuk kembali ke keadaan sebelumnya | ✔ |
| Pengamat | Berikan panggilan balik untuk pemberitahuan peristiwa/perubahan data | ✔ |
| Registri | Pantau semua subkelas dari kelas tertentu | ✔ |
| Negara | Merangkum berbagai perilaku untuk objek yang sama berdasarkan keadaan internalnya | ✔ |
| Strategi | Memungkinkan perilaku algoritma dipilih saat runtime | ✔ |
| Templat | Mendefinisikan kelas kerangka yang menentang beberapa metode untuk subkelas | ✔ |
| Pengunjung | Memisahkan suatu algoritma dari suatu objek yang beroperasi | ✔ |
| Penerjemah | Menafsirkan bahasa Anda sendiri atau perintah yang tenang | ✔ |
Pola sinkronisasi
| Pola | Keterangan | Status |
|---|
| Variabel kondisi | Menyediakan mekanisme bagi utas untuk sementara melepaskan akses untuk menunggu beberapa kondisi | ✘ |
| Kunci/mutex | Menegakkan batas pengecualian timbal balik pada sumber daya untuk mendapatkan akses eksklusif | ✘ |
| Monitor | Kombinasi pola variabel mutex dan kondisi | ✘ |
| Kunci Baca-Penulis | Memungkinkan akses baca paralel, tetapi hanya akses eksklusif pada operasi penulisan ke sumber daya | ✔ |
| Tiang sinyal | Memungkinkan pengendalian akses ke sumber daya umum | ✔ |
Pola konkurensi
| Pola | Keterangan | Status |
|---|
| N-Barrier | Mencegah proses melanjutkan sampai semua proses N mencapai penghalang | ✔ |
| Paralelisme terikat | Menyelesaikan sejumlah besar tugas independen dengan batas sumber daya | ✔ |
| Siaran | Mentransfer pesan ke semua penerima secara bersamaan | ✘ |
| Coroutines | Subrutin yang memungkinkan penangguhan dan melanjutkan eksekusi di lokasi tertentu | ✘ |
| Generator | Menghasilkan urutan nilai satu per satu | ✔ |
| Reaktor | Permintaan layanan demultiplexes dikirimkan secara bersamaan ke penangan layanan dan mengirimkannya secara serentak ke penangan permintaan terkait | ✘ |
| Paralelisme | Menyelesaikan sejumlah besar tugas independen | ✔ |
| Konsumen produsen | Memisahkan tugas dari eksekusi tugas | ✔ |
Pola Pesan
| Pola | Keterangan | Status |
|---|
| Fan-in | Corong Tugas ke Wastafel Kerja (misalnya server) | ✔ |
| Fan-out | Mendistribusikan tugas di antara pekerja (misalnya produser) | ✔ |
| Futures & Promises | Bertindak sebagai tempat pemegang hasil yang awalnya tidak diketahui untuk tujuan sinkronisasi | ✔ |
| Publikasikan/Berlangganan | Meneruskan informasi ke kumpulan penerima yang berlangganan suatu topik | ✔ |
| Dorong & Tarik | Mendistribusikan pesan ke banyak pekerja, diatur dalam pipa | ✘ |
Pola stabilitas
| Pola | Keterangan | Status |
|---|
| Sekat | Menegakkan prinsip penahanan kegagalan (yaitu mencegah kegagalan cascading) | ✘ |
| Pemutus sirkuit | Menghentikan aliran permintaan saat permintaan cenderung gagal | ✔ |
| Tenggat waktu | Memungkinkan klien untuk berhenti menunggu respons setelah probabilitas respons menjadi rendah (misalnya setelah menunggu 10 detik untuk refresh halaman) | ✔ |
| Gagal-cepat | Memeriksa ketersediaan sumber daya yang diperlukan pada awal permintaan dan gagal jika persyaratan tidak terpenuhi | ✘ |
| Handshaking | Meminta komponen jika dapat mengambil beban lagi, jika tidak bisa, permintaan ditolak | ✘ |
| Kondisi mapan | Untuk setiap layanan yang mengumpulkan sumber daya, beberapa layanan lain harus mendaur ulang sumber daya itu | ✘ |
Pola profil
| Pola | Keterangan | Status |
|---|
| Fungsi Waktu | Membungkus fungsi dan mencatat eksekusi | ✔ |
Idiom
| Pola | Keterangan | Status |
|---|
| Opsi fungsional | Memungkinkan pembuatan API bersih dengan default waras dan overrides idiomatik | ✔ |
Anti-pola
Implementasi pola
GO-POLTER-INCAMLES