Tôi nghĩ rằng có ba yếu tố đi vào chơi ở đây.
Thiếu khối lượng quan trọng
Đầu tiên, một mẫu về cơ bản ít hơn là đặt tên cho một số mã thực hiện một "khối" chức năng cụ thể. Cách duy nhất mà tên cung cấp nhiều giá trị thực là nếu bạn có thể phụ thuộc vào mọi người biết tên đó có nghĩa là gì, chỉ bằng cách sử dụng tên, họ ngay lập tức hiểu khá nhiều về mã.
Các mô hình không bao giờ thiết lập khối lượng quan trọng mà họ cần để thực hiện điều đó mặc dù. Thay vào đó là ngược lại, AAMOF. Trong 20 năm hoặc lâu hơn kể từ khi cuốn sách GoF ra mắt, tôi khá chắc chắn rằng tôi đã thấy hàng tá cuộc trò chuyện trong đó mọi người tham gia thực sự biết đủ các mẫu thiết kế để họ sử dụng để cải thiện giao tiếp.
Nói một cách dễ hiểu hơn: các mẫu thiết kế thất bại đặc biệt vì chúng thất bại.
Quá nhiều mẫu
Tôi nghĩ yếu tố chính thứ hai là, nếu có bất cứ điều gì, ban đầu họ đặt tên quá nhiều mẫu. Trong một số lượng lớn các trường hợp, sự khác biệt giữa các mẫu đủ tinh tế đến mức không thể nói chắc chắn thực sự liệu một lớp cụ thể có phù hợp với mẫu này hay mẫu khác (hoặc có thể cả hai - hoặc có thể không).
Mục đích là bạn có thể nói về mã ở mức cao hơn. Bạn có thể gắn nhãn một đoạn mã khá lớn là việc triển khai một mẫu cụ thể. Đơn giản bằng cách sử dụng tên được xác định trước đó, mọi người nghe thường sẽ biết nhiều như họ quan tâm đến mã đó, vì vậy bạn có thể chuyển sang điều tiếp theo.
Thực tế có xu hướng gần như ngược lại. Giả sử bạn đang họp và nói với họ rằng lớp đặc biệt này là Mặt tiền. Một nửa số người trong cuộc họp hoặc không bao giờ biết hoặc từ lâu đã quên chính xác điều đó có nghĩa là gì. Một trong số họ yêu cầu bạn nhắc nhở anh ta về (các) sự khác biệt chính xác giữa một Mặt tiền và, giả sử, một Proxy. Ồ, và một vài người thực sự biết mô hình dành phần còn lại của cuộc họp để tranh luận liệu điều này thực sự nên được coi là Mặt tiền hay "chỉ" một Bộ chuyển đổi (với một anh chàng vẫn khăng khăng rằng nó có vẻ giống như một Proxy đối với anh ta).
Cho rằng ý định của bạn thực sự chỉ là để nói: "mã này không thú vị lắm, hãy tiếp tục", cố gắng sử dụng tên của một mẫu chỉ thêm sự phân tâm, không phải giá trị.
Thiếu sự quan tâm
Hầu hết các mẫu thiết kế không thực sự xử lý các phần thú vị của mã. Họ đối phó với những thứ như: "làm thế nào để tôi tạo ra những vật thể này?" Và "làm thế nào để tôi có thể nói chuyện với đối tượng đó?" Ghi nhớ tên mẫu cho những cái này (cũng như các đối số đã nói ở trên về các chi tiết và như vậy) chỉ đơn giản là đặt nhiều năng lượng vào những thứ mà hầu hết các lập trình viên không quan tâm lắm.
Nói cách khác một chút: các mẫu xử lý những thứ giống nhau giữa nhiều chương trình - nhưng điều thực sự làm cho chương trình trở nên thú vị là nó khác với các chương trình khác như thế nào .
Tóm lược
Các mẫu thiết kế thất bại vì:
- Họ đã không đạt được khối lượng quan trọng.
- Sự khác biệt giữa các mẫu là không đủ để đảm bảo sự rõ ràng.
- Họ chủ yếu xử lý các phần của mã hầu như không ai thực sự quan tâm.