Saya pikir ada tiga faktor yang berperan di sini.
Kurangnya Massa Kritis
Pertama, suatu pola pada dasarnya sedikit lebih dari sekedar memberi nama pada beberapa kode yang mengimplementasikan fungsi tertentu. Satu-satunya cara nama itu memberikan banyak nilai nyata adalah jika Anda dapat bergantung pada semua orang yang tahu apa artinya nama itu hanya dengan menggunakan namanya, mereka segera mengerti cukup banyak tentang kode tersebut.
Pola tidak pernah membentuk massa kritis yang mereka butuhkan untuk mencapai itu. Sebaliknya, AAMOF. Dalam 20 (atau lebih) tahun sejak buku GoF keluar, saya cukup yakin saya belum melihat selusin percakapan di mana semua orang yang terlibat benar-benar tahu pola desain yang cukup untuk digunakan mereka untuk meningkatkan komunikasi.
Untuk membuatnya sedikit lebih aneh: pola desain gagal secara khusus karena gagal.
Terlalu Banyak Pola
Saya pikir faktor utama kedua adalah bahwa, jika ada, mereka awalnya menyebutkan terlalu banyak pola. Dalam banyak kasus, perbedaan antara pola cukup halus sehingga hampir tidak mungkin untuk mengatakan dengan kepastian nyata apakah suatu kelas tertentu cocok dengan satu pola atau yang lain (atau mungkin keduanya - atau mungkin tidak keduanya).
Maksudnya adalah agar Anda dapat berbicara tentang kode di tingkat yang lebih tinggi. Anda dapat memberi label sejumlah kode yang cukup besar sebagai implementasi dari pola tertentu. Cukup dengan menggunakan nama yang telah ditentukan itu, semua orang yang mendengarkan biasanya tahu sebanyak mereka peduli dengan kode itu, sehingga Anda dapat beralih ke hal berikutnya.
Kenyataannya cenderung hampir sebaliknya. Katakanlah Anda sedang rapat dan beri tahu mereka bahwa kelas khusus ini adalah Fasad. Separuh orang dalam rapat itu tidak pernah tahu atau sudah lama lupa persis apa artinya itu. Salah satu dari mereka meminta Anda untuk mengingatkannya tentang perbedaan persis antara Facade dan, katakanlah, Proxy. Oh, dan beberapa orang yang benar-benar tahu pola menghabiskan sisa pertemuan memperdebatkan apakah ini benar-benar harus dianggap sebagai Fasad atau "hanya" Adaptor (dengan satu pria masih bersikeras bahwa sepertinya Proxy baginya).
Mengingat bahwa maksud Anda benar-benar hanya untuk mengatakan: "kode ini tidak terlalu menarik; mari kita beralih", mencoba menggunakan nama pola hanya menambah gangguan, bukan nilai.
Kurang minat
Kebanyakan pola desain tidak benar-benar berurusan dengan bagian kode yang menarik. Mereka berurusan dengan hal-hal seperti: "bagaimana cara membuat objek ini?", Dan "bagaimana saya membuat objek ini untuk berbicara dengan yang itu?" Menghafal nama-nama pola untuk ini (dan juga argumen yang disebutkan di atas tentang detail dan semacamnya) hanya memasukkan banyak energi ke dalam hal-hal yang tidak dipedulikan oleh kebanyakan programmer.
Singkatnya: pola berurusan dengan hal-hal yang sama antara banyak program - tetapi yang benar-benar membuat program menarik adalah bagaimana hal itu berbeda dari program lain.
Ringkasan
Pola desain gagal karena:
- Mereka gagal mencapai massa kritis.
- Perbedaan antara pola tidak cukup untuk menjamin kejelasan.
- Mereka sebagian besar berurusan dengan bagian-bagian kode hampir tidak ada yang benar-benar peduli.