Saya hanya mendengar istilah "pola desain" yang digunakan untuk kode berorientasi objek, dan pola GoF hanya mencakup pola desain OOP, tetapi pola desain adalah solusi elegan untuk masalah pemrograman yang biasa terjadi, bukan? Tidak ada apa-apa di sana yang mengatakan bahwa mereka harus dibatasi OOP, kan?
Saya ingin melihat beberapa contoh pola desain di luar bidang pemrograman berorientasi objek. Apakah Anda memiliki? Apakah bahkan ada (tidak ada buku, seperti buku GoF, yang harus ditulis, mereka hanya boleh digunakan; itu sudah cukup)?
Mereka dapat spesifik untuk beberapa bahasa pemrograman, tetapi pola umum (level paradigma) lebih disukai, dari paradigma lain daripada yang berorientasi objek.
design-patterns
Anto
sumber
sumber
Jawaban:
Lihatlah seri Pola Desain Kernel Linux. Artikel-artikel tersebut terkait dengan bahasa yang tidak berorientasi objek (C) dan saya percaya bahwa mereka ditulis dengan baik:
sumber
Sebenarnya ini paradoks - salah satu pola Non-OO yang paling populer adalah ... "Kelas".
Karena OO ditemukan dalam bahasa non-OO, pengembang harus mensimulasikannya (dan mereka melakukannya bahkan sekarang) - sehingga pola lahir. LISP dan C adalah contohnya.
Tapi terima saran saya: Jangan melakukan kesalahan umum - jangan menggunakan pola hanya karena itu keren , Anda perlu alasan serius untuk membenarkan penggunaan pola (setidaknya yang OO).
Ambil pola Perintah misalnya - walaupun bagus & memisahkan pemanggil dari penerima, itu tidak boleh digunakan kecuali Anda benar-benar membutuhkannya - karena operasi harus diekspresikan menggunakan kata kerja - yang berarti metode. Dan menggunakan perintah di semua tempat Anda akan berakhir dengan sekelompok OO-lambda yang sepenuhnya terdesentralisasi - yang sama akan berlaku untuk banyak Strategi.
sumber
"Pola desain" sebenarnya adalah eufemisme untuk "solusi". Pola desain diciptakan untuk mengatasi kekurangan dan kekurangan dalam bahasa OO . Misalnya ambil pola iterator yang akhirnya mengarah pada pengenalan koleksi di Jawa. Groovy menyingkirkan lebih banyak pola dengan mengubahnya menjadi fitur bahasa: Anda tidak lagi membutuhkan pola dekorator karena Anda dapat menambahkan metode ke kelas yang ada di Groovy.
Ini berarti Anda dapat menemukan pola desain di mana-mana. Bahkan setiap "praktik terbaik" dapat dianggap sebagai bentuk sederhana dari pola desain.
sumber
LtU menyebutkan bahwa Jeremy Gibbons sedang menulis buku tentang pola dalam pemrograman fungsional. Lihat Pola Pak Gibbon di blog Pemrograman Fungsional untuk beberapa permainan asah. Perhatikan ia merekomendasikan membaca posting-postingnya dari terlama hingga terbaru.
Makalahnya Desain Pola sebagai Program Generasi Tinggi Datatype-Generik (pdf) secara fungsional memodelkan pola Geng Empat: Komposit, Iterator, Pengunjung, dan Pembuat. Dia menjelaskan pola pemrograman dengan persamaan rekursif dalam Origami Programming (lipatan dan lipatan).
sumber
Ada pola desain SQL .
Dan beberapa pola desain fungsional juga ada - lihat di sini untuk scala.
sumber
Alih-alih menamai pola desain non-oo, saya ingin memberi Anda beberapa contoh buku yang memiliki banyak pola desain (di dalamnya beberapa pola masih akan spesifik OO):
Semoga ini membantu
sumber
Dalam pemrograman fungsional (terutama Haskell), ada banyak pola dan idiom yang tidak dapat dipetakan dengan baik ke OOP. Jenis hantu adalah contoh terkenal, dan Anda dapat menemukan lebih banyak di halaman wiki haskell di Idioms .
sumber
Pemrograman modular cukup populer untuk perpustakaan numerik dan aplikasi matematika-berat (perangkat lunak numerik terkenal sulit untuk memodelkan menggunakan pola-pola Berorientasi Objek, terutama karena ada sangat sedikit Anda dapat merangkum).
sumber
Contoh yang baik dari pola non-OOP adalah katalog pola favorit mutlak saya: Pola Organisasi Pengembangan Perangkat Lunak Agile, oleh James O. Coplien . Buku ini bukan tentang pola perangkat lunak, tentang orang, katalog untuk menciptakan tim yang sukses. Setiap manajer harus membaca buku ini!
sumber
Saya suka memikirkan Strucutres Data seperti Antrian, Daftar tertaut, Pohon, grafik, dll sebagai pola. Mereka menentukan pola tertentu untuk menyimpan data dan memprosesnya. Mereka mungkin tampak primitif dibandingkan dengan patters Gang of Four yang lebih tinggi tetapi mereka adalah pola namun demikian. Maksud saya, apa yang akan terjadi jika seseorang menerapkan stack sebagai FIFO alih-alih LIFO dan sebaliknya untuk antrian dan menamakannya sebaliknya?
sumber