Burada ortaya çıkan üç faktör olduğunu düşünüyorum.
Kritik Kütle Eksikliği
İlk olarak, bir model, temel olarak, işlevselliğin belirli bir "öbeğini" uygulayan bazı koda bir isim vermekten daha azdır. Bu ismin gerçek değerini sağlamanın tek yolu, ismin ne anlama geldiğini bilen herkese güvenebiliyorsanız, sadece ismi kullanarak derhal kodu çok iyi anlarlar.
Desenler, bunu başarmak için ihtiyaç duydukları kritik kütleyi hiçbir zaman oluşturmadı. Aksine, AAMOF. GoF kitabının çıktığından bu yana geçen 20 (20) yıl boyunca, katılan herkesin iletişimi geliştirmek için kullanabilecekleri tasarım desenlerini gerçekten bildiği bir düzine kadar konuşma görmedim.
Biraz daha ilginç söylemek gerekirse: tasarım desenleri özellikle başarısız oldukları için başarısız oldu.
Çok fazla desen
Bence ikinci ana faktör, eğer bir şey varsa, başlangıçta çok fazla desen seçtiler. Çok sayıda durumda, kalıplar arasındaki farklar, belirli bir sınıfın bir kalıba mı yoksa diğerine mi uyduğunu (ya da belki her ikisini ya da belki ikisini de) gerçekten kesin olarak söylemenin imkânsız olduğu konusunda yeterince incedir.
Amaç, kod hakkında daha yüksek bir düzeyde konuşabilmenizdi. Belirli bir desenin uygulaması olarak oldukça büyük bir kod öbeğini etiketleyebilirsiniz. Basitçe, önceden tanımlanmış olan bu ismi kullanarak, herkes dinleyen genellikle o kodu önemsemediği kadarını bilirdi, böylece bir sonraki şeye geçebildiniz.
Gerçek neredeyse tam tersi olma eğilimindedir. Diyelim ki bir toplantıdasınız ve bu belirli sınıfın bir Cephe olduğunu söyleyelim. Toplantıdaki kişilerin yarısı, ne anlama geldiğini tam olarak unuttuğundan beri, hiçbir zaman bilemez ya da bilmez. Onlardan biri ona bir Cephe ve bir Proxy arasındaki tam farkı hatırlatmanızı ister. Ah, ve kalıpları gerçekten tanıyan bir çift insan, toplantının geri kalanını bunun bir Cephe mi yoksa sadece bir Adaptör olarak mı '' bir '' Bağdaştırıcı '' olarak kabul edilip edilmeyeceğini tartışarak geçirir (bu adam hala onun için Proxy gibi görünmesi konusunda ısrar eder).
Niyetiniz gerçekten sadece: "bu kod çok ilginç değil; devam edelim" diyerek, bir modelin adını kullanmaya çalışırken, sadece dikkat dağıtma ekledi, değer değil.
İlgi eksikliği
Çoğu tasarım deseni, kodun ilginç kısımlarıyla gerçekten ilgilenmez. "Bu nesneleri nasıl yaratırım?" Ve "Bu nesnenin onunla konuşmasını nasıl sağlayabilirim?" Bunlar için örüntü adlarını ezberlemek (ve ayrıca detaylar ve daha önce bahsi geçen argümanların yanı sıra) çoğu programcının umursamadığı şeylere çok fazla enerji harcıyor.
Biraz daha farklı koymak gerekirse: kalıplar pek çok program arasında aynı olan şeylerle ilgilenir - ama gerçekten bir programı ilginç yapan şey , diğer programlardan nasıl farklı olduğu .
özet
Tasarım desenleri başarısız oldu, çünkü:
- Kritik kütle elde edemediler.
- Desenler arasındaki farklılıklar netliği sağlamak için yetersizdi.
- Çoğunlukla kod bölümleriyle ilgileniyorlardı, neredeyse hiç kimse gerçekten umursamıyordu.