Design Pattern là gì?

Trong kỹ thuật phần mềm, 1 Design Pattern (mẫu thiết kế) là 1 giải pháp chung có thể lặp lại cho 1 vấn đề thường xảy ra trong thiết kế phần mềm. 1 design pattern không phải là 1 thiết kế hoàn chỉnh để có thể chuyển trực tiếp thành source code mà nó chỉ là 1 mô tả hoặc mẫu (template) để giúp chỉ ra cách giải quyết vấn đề và nó có thể sử dụng được trong nhiều trường hợp khác nhau.

Hiểu 1 cách đơn giản thì design pattern là 1 giải pháp (solution) mẫu mà rất nhiều tiền bối giỏi đi trước gặp phải, giải quyết thành côngtổng quát hóa nó lên; giúp cho các hậu bối nếu có gặp phải thì cứ mang ra mà dùng; thừa sự uy tín, đảm bảo tối ưu. Nó không phải áp dụng cho riêng 1 ngôn ngữ cụ thể nào cả, hầu hết các ngôn ngữ lập trình đều có thể triển khai nó.

Tại sao phải sử dụng Design Pattern?

  • Như đã nói ở trên, đó là tinh hoa của các bậc tiền bối giúp giải quyết các bài toán, vấn đề cơ bản thường gặp phải trong khi lập trình. Thế cho nên chả tội gì không dùng cả, vừa nhanh, đỡ tốn thời gian tìm hiểu và giải quyết
  • Design Pattern cũng giống như 1 loại ngôn ngữ giao tiếp (dành cho thiết kế), khi bạn viết code, triển khai cấu trúc theo 1 design pattern nào đó thì các Developers khác cũng dễ dàng đọc và hiểu code của bạn 1 cách nhanh chóng hơn.
  • Trên hết thì Design Pattern qua thời gian đã có rất nhiều ưu điểm được thể hiện: giải pháp tối ưu, hiệu năng sử dụng, dễ dàng kiểm thử. Chính vì thế nếu các bạn chọn đúng, triển khai đúng với tư duy, giải pháp thiết kế tốt thì sẽ dễ dàng và tự tin hơn khi có yêu cầu thay đổi, hệ thống scale to ra.

https://en.wikipedia.org/wiki/Design_pattern

Phân loại Design Patterns

Trong cuốn sách “Design patterns Elements of Reusable Object Oriented Software” (khởi nguồn của design pattern trong lập trình), 4 tác giả đã đưa ra định nghĩa và mô tả về 23 mẫu Design Patterns và chia thành 3 nhóm gồm:

  • Creational Pattern (Nhóm khởi tạo): bao gồm 5 mẫu cung cấp giải pháp liên quan đến việc tạo ra các object và che giấu được logic của việc tạo ra nó thay vì tạo trực tiếp bằng phương thức new. Nó giúp chương trình có thể quản lý quyết định object cần được tạo ra trong từng tình huống cụ thể.
    • Factory Method
    • Abstract Factory
    • Builder
    • Prototype
    • Singleton
  • Structural Pattern (Nhóm cấu trúc): bao gồm 7 mẫu liên quan đến class và các thành phần của object (2 đặc trưng của phương pháp lập trình hướng đối tượng OOP); nó dùng để thiết lập, định nghĩa quan hệ giữa các đối tượng.
    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Proxy
  • Behavioral Pattern (Nhóm tương tác / hành vi): bao gồm 11 mẫu dùng trong thực hiện các hành vi của đối tượng, sự giao tiếp giữa các object với nhau.
    • Interpreter
    • Template Method
    • Chain of Responsibility
    • Command
    • Iterator
    • Mediator
    • Memento
    • Observer
    • State
    • Strategy
    • Visitor

Trong các bài viết sau mình sẽ đi chi tiết vào từng design pattern trong bộ 23 patterns trên. Link bài viết tham khảo trên trang này nhé các bạn:

https://refactoring.guru/design-patterns/catalog

Cảm ơn mọi người đã đọc!