Mẫu thiết kế (khoa học máy tính)
Các mẫu xuất phát từ một ý niệm kiến trúc đưa ra bởi Christopher Alexander. Vào năm 1987, Kent Beck và Ward Cunningham bắt đầu thử nghiệm ý tưởng áp dụng các mẫu vào lập trình và đưa ra các kết quả của chúng tại hội thảo OOPSLA vào năm đó. ...
Các mẫu xuất phát từ một ý niệm kiến trúc đưa ra bởi Christopher Alexander. Vào năm 1987, Kent Beck và Ward Cunningham bắt đầu thử nghiệm ý tưởng áp dụng các mẫu vào lập trình và đưa ra các kết quả của chúng tại hội thảo OOPSLA vào năm đó. Vào các năm tiếp theo, Beck, Cunningham và những người khác vẫn tiếp tục với công việc này.
Các mẫu thiết kế đã trở nên phổ biến trong khoa học máy tính sau khi cuốn sách Design Patterns: Elements of Reusable Object-Oriented Software được ấn hành vào năm 1994 (Gamma et al). Vào cùng năm đó, cuộc hội thảo đầu tiên về Các ngôn ngữ mẫu cho các chương trình đã được tổ chức và vào năm sau, Kho dự trữ các mẫu Portland (Portland Pattern Repository) đã được thiết lập để lưu trữ văn bản về các mẫu thiết kế.
Các mẫu thiết kế có thể giúp tăng tốc quá trình phát triển phần mềm bằng cách cung cấp các mẫu hình (paradigms) phát triển đã được chứng thực và kiểm chứng. Để thiết kế phần mềm hiệu quả đòi hỏi phải xem xét các yếu tố mà chỉ trở nên rõ ràng sau khi hiện thực. Xác định được chúng, thông qua các mẫu thiết kế, chúng ta sẽ thoát khỏi chúng vì chúng có thể dẫn đến những rắc rối lớn và cải tiến khả năng dễ đọc của mã cho người viết mã và các nhà kiến trúc sẽ cảm thấy quen thuộc với các mẫu.
Thông thường, mọi người chỉ biết cách áp dụng một số kĩ thuật thiết kế phần mềm nào đó vào một vài vấn đề cụ thể nào đó. Những kĩ thuật này khó áp dụng mở rộng cho các vấn đề khác. Các mẫu thiết kế cung cấp các giải pháp chung, được viết tài liệu dưới một định dạng mà không gắn liền với một vấn đề cụ thể nào cả.
Các mẫu cho phép các nhà phát triển giao tiếp với nhau dùng các tên dễ hiểu, được dùng rộng rãi để đặt cho các tương tác của phần mềm. Các mẫu thiết kế chung có thể được cải tiến qua thời gian, để trở nên ổn định hơn là thiết kế tùy biến (ad-hoc designs).
Các mẫu thiết kế có thể được phân loại dựa vào nhiều tiêu chí, chung nhất là dựa vào vấn đề cơ bản mà chúng giải quyết. Theo tiêu chuẩn này, các mẫu thiết kế có thể được phân loại thành nhiều lớp, một số trong chúng là:
Các mẫu Cơ Sở (Fundamental pattern)
Các mẫu Tạo Lập (Creational pattern)
Các mẫu Cấu Trúc (Structural pattern)
Các mẫu Ứng Xử (Behavioral pattern)
Các mẫu Đồng Thời (Concurrency pattern)
Các mẫu xử lí Sự Kiện (Event handling pattern)
Các mẫu Kiến Trúc (Architectural pattern)
Việc viết tài liệu cho một mẫu thiết kế nên chứa đựng đủ thông tin về vấn đề mà mẫu đề cập, ngữ cảnh trong đó nó được sử dụng và giải pháp được đề nghị. Tuy vậy, các tác giả mẫu thường sử dụng các dạng trình bày mẫu riêng của mình để trình bày các mẫu thiết kế, và các dạng trình bày mẫu thường tương tự với các phần cần thiết đã nêu. Các tác giả thường bao gồm thêm một số đoạn để cung cấp nhiều thông tin hơn và tổ chức các phần cần thiết trong những đoạn khác nhau có thể có với những tên khác nhau. Một dạng chung thường được sử dụng là dạng được sử dụng bởi "Bộ tứ" (Các tác giả của Mẫu Thiết Kế). Nó bao gồm các đoạn:
Tên mẫu và sự phân loại: Mỗi mẫu nên có một tên mô tả và là duy nhất để danh định và tham khảo đến. Thêm vào đó, một mẫu nên được phân loại theo một cách đã được mô tả trước đó. Việc phân loại giúp việc định ra việc sử dụng mẫu .
Dự định: Đoạn này nên mô tả mục tiêu của mẫu và các lập luận cho việc sử dụng mẫu. Nó như phần vấn đề của mẫu.
Tên gọi