Mẫu thiết kế là gì?
Các mẫu thiết kế là giải pháp điển hình cho các vấn đề thường xảy ra trong thiết kế phần mềm. Chúng giống như các bản thiết kế được tạo sẵn mà bạn có thể tùy chỉnh để giải quyết vấn đề thiết kế lặp lại trong mã của mình.
Bạn không thể chỉ tìm một mẫu và sao chép nó vào chương trình của mình, theo cách bạn có thể làm với các hàm hoặc thư viện có sẵn. Mẫu không phải là một đoạn mã cụ thể, mà là một khái niệm chung để giải quyết một vấn đề cụ thể. Bạn có thể làm theo các chi tiết mẫu và triển khai một giải pháp phù hợp với thực tế của chương trình của riêng bạn.
Các mẫu thường bị nhầm lẫn với thuật toán, vì cả hai khái niệm đều mô tả các giải pháp điển hình cho một số vấn đề đã biết. Trong khi một thuật toán luôn xác định một tập hợp các hành động rõ ràng có thể đạt được một số mục tiêu, thì một mẫu là một mô tả cấp cao hơn về một giải pháp. Mã của cùng một mẫu được áp dụng cho hai chương trình khác nhau có thể khác nhau.
Tương tự với thuật toán là một công thức: cả hai đều có các bước rõ ràng để đạt được mục tiêu. Mặt khác, một mẫu giống như một bản thiết kế: bạn có thể xem kết quả và các tính năng của nó, nhưng thứ tự thực hiện chính xác là tùy thuộc vào bạn.
Mẫu bao gồm những gì?
Hầu hết các mẫu được mô tả rất chính thống để mọi người có thể tái tạo chúng trong nhiều ngữ cảnh. Dưới đây là các phần thường có trong mô tả mẫu:
- Mục đích của mẫu mô tả ngắn gọn cả vấn đề và giải pháp.
- Động cơ giải thích thêm vấn đề và giải pháp mà mẫu tạo ra là khả thi.
- Cấu trúc của các lớp cho thấy từng phần của mẫu và cách chúng liên quan nhau.
- Mã mẫu bằng một trong những ngôn ngữ lập trình phổ biến giúp bạn dễ dàng nắm bắt ý tưởng đằng sau.
Phân loại các mẫu
Các mẫu thiết kế khác nhau bởi độ phức tạp, mức độ chi tiết và quy mô khả năng áp dụng cho toàn bộ hệ thống đang được thiết kế. Các mẫu có thể được phân loại theo ý định hoặc mục đích của chúng. Hiện có 22 mẫu. Thông thường chúng được chia thành ba nhóm mẫu chính, như sau:
- Các mẫu khởi tạo (Creational patterns) cung cấp các cơ chế tạo đối tượng để tăng tính linh hoạt và tái sử dụng mã hiện có.
- Factory Method
- Abstract Factory
- Builder
- Prototype
- Singleton
- Các mẫu cấu trúc (Structural patterns) giải thích cách tập hợp các đối tượng và lớp thành các cấu trúc lớn hơn, trong khi vẫn giữ cho cấu trúc linh hoạt và hiệu quả.
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- Các mẫu hành vi (Behavioral patterns) quan tâm đến việc giao tiếp hiệu quả và phân công trách nhiệm giữa các đối tượng.
- Chain of Responsibility
- Command
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
Chúng ta sẽ tìm hiểu về từng mẫu trong các bài viết sau.
Để lại một bình luận