Kumpulan pola desain dan idiom dengan Python.
Ingatlah bahwa setiap pola memiliki trade-off tersendiri. Dan Anda perlu lebih memperhatikan alasan Anda memilih pola tertentu daripada cara menerapkannya.
Pola Penciptaan :
Pola | Keterangan |
---|---|
abstract_factory | menggunakan fungsi generik dengan pabrik tertentu |
borg | sebuah singleton dengan status bersama di antara instance |
pembangun | alih-alih menggunakan banyak konstruktor, objek pembangun menerima parameter dan mengembalikan objek yang dibangun |
pabrik | mendelegasikan fungsi/metode khusus untuk membuat instance |
malas_evaluasi | pola properti yang dievaluasi dengan malas dengan Python |
kolam | membuat instance dan memelihara sekelompok instance dari tipe yang sama |
prototipe | gunakan pabrik dan klon prototipe untuk instance baru (jika instantiasi mahal) |
Pola Struktural :
Pola | Keterangan |
---|---|
3 tingkat | data<->logika bisnis<->pemisahan presentasi (hubungan yang ketat) |
adaptor | mengadaptasi satu antarmuka ke antarmuka lainnya menggunakan daftar putih |
menjembatani | perantara penyedia klien untuk memperhalus perubahan antarmuka |
gabungan | memungkinkan klien memperlakukan objek dan komposisi individual secara seragam |
penghias | bungkus fungsionalitas dengan fungsionalitas lain untuk mempengaruhi output |
fasad | menggunakan satu kelas sebagai API untuk sejumlah kelas lainnya |
kelas terbang | secara transparan menggunakan kembali instance objek yang ada dengan status serupa/identik |
front_controller | permintaan penangan tunggal datang ke aplikasi |
mvc | model<->view<->controller (hubungan tidak ketat) |
proksi | suatu objek menyalurkan operasi ke sesuatu yang lain |
Pola Perilaku :
Pola | Keterangan |
---|---|
rantai_tanggung_tanggung jawab | menerapkan rantai penangan yang berurutan untuk mencoba dan memproses data |
katalog | metode umum akan memanggil metode khusus yang berbeda berdasarkan parameter konstruksi |
metode_rantai | lanjutkan panggilan balik metode objek berikutnya |
memerintah | menggabungkan perintah dan argumen untuk dipanggil nanti |
iterator | melintasi wadah dan mengakses elemen wadah |
iterator (alt. impl.) | melintasi wadah dan mengakses elemen wadah |
penengah | sebuah objek yang mengetahui cara menghubungkan objek lain dan bertindak sebagai proxy |
kenang-kenangan | menghasilkan token buram yang dapat digunakan untuk kembali ke keadaan sebelumnya |
pengamat | memberikan panggilan balik untuk pemberitahuan kejadian/perubahan data |
terbitkan_berlangganan | sumber mensindikasikan peristiwa/data ke 0+ pendengar terdaftar |
registri | melacak semua subkelas dari kelas tertentu |
spesifikasi | aturan bisnis dapat digabungkan kembali dengan merangkai aturan bisnis menggunakan logika boolean |
negara | logika disusun menjadi sejumlah keadaan potensial dan keadaan berikutnya yang dapat ditransisikan |
strategi | operasi yang dapat dipilih pada data yang sama |
templat | sebuah objek menerapkan struktur tetapi mengambil komponen yang dapat dipasang |
pengunjung | memanggil panggilan balik untuk semua item koleksi |
Desain untuk Pola Testabilitas :
Pola | Keterangan |
---|---|
ketergantungan_injeksi | 3 varian injeksi ketergantungan |
Pola Dasar :
Pola | Keterangan |
---|---|
delegasi_pattern | sebuah objek menangani permintaan dengan mendelegasikan ke objek kedua (delegasi) |
Yang lain :
Pola | Keterangan |
---|---|
papan tulis | model arsitektur, merakit pengetahuan sub-sistem yang berbeda untuk membangun solusi, pendekatan AI - non-geng empat pola |
grafik_pencarian | algoritma grafik - non geng empat pola |
hsm | mesin negara hierarkis - bukan pola geng empat |
Pola Desain dengan Python oleh Peter Ullrich
Sebastian Buczyński - Mengapa Anda tidak memerlukan pola desain dengan Python?
Anda Tidak Membutuhkan Itu!
Lib yang Dapat Dicolokkan Melalui Pola Desain
Saat penerapan ditambahkan atau diubah, harap tinjau pedoman berikut:
Tambahkan deskripsi tingkat modul dalam bentuk docstring dengan tautan ke referensi terkait atau informasi berguna lainnya.
Tambahkan bagian "Contoh dalam ekosistem Python" jika Anda mengetahuinya. Ini menunjukkan bagaimana pola dapat diterapkan pada permasalahan dunia nyata.
facade.py memiliki contoh deskripsi mendetail yang bagus, tetapi terkadang deskripsi yang lebih pendek seperti di template.py sudah cukup.
Untuk melihat versi beberapa pola yang kompatibel dengan Python 2, silakan periksa tag lama.
Ketika semuanya sudah selesai - perbarui bagian README yang sesuai.
Silakan jalankan yang berikut ini sebelum mengirimkan patch
black .
Ini akan membuat kode Anda menjadi lint.Lalu:
tox
atau tox -e ci37
Ini menjalankan pengujian unit. lihat tox.ini untuk rincian lebih lanjut../lint.sh
Skrip ini akan menyaring dan menguji kode Anda. Skrip ini mencerminkan tindakan alur CI. Anda juga dapat menjalankan perintah flake8
atau pytest
secara manual. Contohnya dapat ditemukan di tox.ini
.
Anda dapat melakukan triase masalah dan menarik permintaan yang mungkin mencakup pembuatan ulang laporan bug atau meminta informasi penting, seperti nomor versi atau instruksi reproduksi. Jika Anda ingin memulai menentukan prioritas masalah, salah satu cara mudah untuk memulainya adalah dengan berlangganan pola python di CodeTriage.
Orang-orang di Mutable.ai telah membangun asisten AI yang sadar basis kode. Cobalah