0

Design Pattern là gì? Các phân loại mà lập trình viên cần nắm vững

Mở đầu

Trong quá trình phát triển phần mềm, lập trình viên thường xuyên đối mặt với những bài toán kỹ thuật phức tạp, đòi hỏi nhiều thời gian và kinh nghiệm để tìm ra hướng giải quyết hiệu quả.

Sau khi vượt qua những thử thách này, các lập trình viên sẽ tích lũy được những kinh nghiệm quý báu. Tuy nhiên, để chia sẻ các cách giải quyết tối ưu đó cho cộng đồng – giúp những lập trình viên khác không phải "phát minh lại bánh xe" – cần một cách tiếp cận hệ thống và dễ áp dụng.

Chính vì vậy, khái niệm Design Pattern (mẫu thiết kế phần mềm) ra đời – nhằm tổng hợp và chuẩn hóa những giải pháp thiết kế đã được kiểm chứng, giúp giải quyết các vấn đề phổ biến trong phát triển phần mềm một cách hiệu quả và nhất quán.

Design Pattern là gì?

  • Design Pattern là các mẫu thiết kế (giống như các template có sẵn) dùng để giải quyết các vấn đề kĩ thuật về phần mềm.

vd: bạn đã có sẵn một bản vẽ thiết kế về ngôi nhà, từ đó có thể xây ra được một ngôi nhà mà tránh được những sai sót trong quá trình triển khai xây dựng.

Lịch sử hình thành

  • Vào đầu những năm 1990, 4 tác giả nổi tiếng trong ngành phần mềm: Erich Gamma, Richard Helm, Ralph Johnson, và John Vlissides – được gọi chung là Gang of Four (GoF) – đã đưa khái niệm “pattern” vào thế giới lập trình.

  • Năm 1994, họ xuất bản cuốn sách huyền thoại: Design Patterns: Elements of Reusable Object-Oriented Software

  • Cuốn sách trình bày về 23 mẫu design pattern kinh điển đã được kiểm chứng trong lập trình hướng đối tượng (OOP).

Các nhóm Design Pattern phổ biến

  • Theo GoF các mẫu design pattern được phân thành 3 nhóm chính:

Bài viết này chỉ nêu tổng quan về các mẫu design pattern, các ví dụ thực tế sẽ được cập nhật trong các bài viết sau!

1. Creational Patterns (Nhóm khởi tạo)

Creational Patterns tập trung vào cách tạo đối tượng trong phần mềm.

  • Giúp đưa ra phương pháp để tạo ra đối tượng một cách linh hoạt, nhất quán. Tránh việc khởi tạo bị lập lại gây ra khó kiểm soát và mở rộng.
  • Giúp ẩn giấu logic khởi tạo và giúp phần mềm độc lập với cách đối tượng được tạo ra.

Các mẫu pattern phổ biến:

Tên gọi
Singleton
Factory Method
Abstract Factory
Builder
Prototype

2. Structural Patterns (Nhóm cấu trúc)

Structural Patterns tập trung vào cách tổ chức, liên kết các lớp hoặc đối tượng với nhau.

  • Sắp xếp các class và object để tạo thành cấu trúc lớn hơn, giảm sự phụ thuộc chặt chẽ giữa các thành phần.
  • Đảm bảo hệ thống dễ bảo trì và phát triển.

Các mẫu pattern phổ biến:

Tên gọi
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy

3. Behavioral Patterns (Nhóm hành vi)

Behavioral Patterns tập trung vào cách các đối tượng giao tiếpphối hợp hành động với nhau.

  • Tập trung vào luồng dữ liệu, cách truyền thông điệp, và phân chia trách nhiệm hành vi giữa các đối tượng.
  • Giảm sự phụ thuộc và tăng tính linh hoạt trong việc trao đổi dữ liệu, hành động.

Các mẫu pattern phổ biến:

Tên gọi
Observer
Strategy
Command
Iterator
State
Mediator
Chain of Responsibility
Template Method
Visitor
Interpreter
Memento

Kết luận

  • Design Pattern là một kiến thức quan trọng cần nắm vững vì các mẫu thiết kế này được sử dụng rộng rãi, phổ biến trong lập trình hướng đối tượng (OOP).
  • Đây là hành trang vững chắc giúp các lập trình viên có thể bước vào các dự án thực tế giúp cho việc tiếp cận source code trở nên dễ dàng hơn, bên cạnh đó khi có các vấn đề kĩ thuật về phần mềm cần giải quyết, chúng ta có thể ngay lập tức áp dụng các dụng các kiến thức về design pattern và xử lý các vấn đề này một cách đơn giản và nhanh chóng hơn!

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí