Bạn đề cập đến cả hai mẫu thiết kế và khớp nối. Đây là những khái niệm riêng biệt nên tôi sẽ giải quyết chúng một cách riêng biệt. Mối liên hệ thực sự duy nhất là các mẫu thiết kế có xu hướng thúc đẩy khớp nối lỏng lẻo (vì đó là khía cạnh chính của thiết kế tốt).
Mẫu thiết kế
Khái niệm về các mẫu thiết kế thực sự khá đơn giản: Chúng chỉ là một tập hợp các mẫu về cách giải quyết các vấn đề phổ biến khác nhau. Có 2 lý do chính khiến chúng phổ biến:
- Chúng được 'chứng minh': chúng đã được sử dụng trước nhiều lần và những lợi ích / hạn chế của từng loại thường được biết đến, đặc biệt là bất kỳ vấn đề tinh tế nào có thể gây ra vấn đề lớn đều được biết đến.
- Họ cung cấp một bộ thuật ngữ chung và do đó cho phép giao tiếp dễ dàng hơn. Nếu ai đó nói rằng "lớp X đóng vai trò của người quan sát trong mẫu người quan sát" thì các nhà phát triển đã quen thuộc với mẫu này có thể ngay lập tức nắm bắt được những gì đang diễn ra.
Làm thế nào để bạn biết rằng bạn đã thực hiện nó một cách chính xác? Đó là một điều khó khăn. Đối với hầu hết các mẫu, nó đơn giản - bạn đã mò mẫm nó hoặc bạn chưa. Một số mẫu ít được xác định rõ ràng hơn các mẫu khác - ví dụ: model-view-controller . Các mô hình như thế được sử dụng tốt hơn như hướng dẫn chung. Các chi tiết cụ thể về cách bạn triển khai nó ít quan trọng hơn việc hiểu các lý do mà mô hình tồn tại và ý nghĩa của nó để thực hiện.
Các mẫu thiết kế không phải là "một cách thực sự". Thường thì bạn sẽ cần điều chỉnh chúng cho các mục đích cụ thể của mình hoặc đôi khi sẽ không có bất kỳ mẫu nào phù hợp với yêu cầu. Buộc một mẫu thiết kế nơi nó không phù hợp là một ý tưởng tồi; nó giống như sử dụng một cái búa thực sự tốt khi thứ bạn thực sự muốn là một cái tuốc nơ vít.
Khớp nối
Đây là một ý tưởng thực sự quan trọng trong khoa học máy tính. Vì các yêu cầu cho hầu hết các dự án phần mềm thay đổi theo thời gian (đôi khi đáng kể), nên khả năng thiết kế để đối phó với các thay đổi là rất quan trọng. Khớp nối về cơ bản là thước đo "khó có thể trao đổi thành phần này cho thành phần khác?" 'Thành phần' có thể là một phương thức, lớp, gói, thư viện, v.v.
Có nhiều loại khớp nối được liệt kê trong bài viết Wikipedia này .