Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Design Patterns

Overview

Design patterns là các giải pháp được kiểm chứng cho các vấn đề thiết kế phần mềm thường gặp. Chúng cung cấp template cho việc giải quyết vấn đề có thể được áp dụng trong nhiều tình huống khác nhau.

Categories

Design patterns được chia thành 3 nhóm chính:

1. Creational Patterns

Những pattern liên quan đến việc khởi tạo object, giúp tách biệt quá trình khởi tạo khỏi logic nghiệp vụ.

  • Singleton: Đảm bảo chỉ có một instance của class
  • Factory Method: Định nghĩa interface cho việc tạo object
  • Abstract Factory: Tạo families of related objects
  • Builder: Tách biệt construction của complex object
  • Prototype: Tạo object bằng cách cloning một object khác

2. Structural Patterns

Những pattern liên quan đến cách kết hợp objects và classes để tạo thành cấu trúc lớn hơn.

  • Adapter: Chuyển đổi interface của một class sang interface khác
  • Bridge: Tách abstraction khỏi implementation
  • Composite: Tạo cấu trúc tree-like
  • Decorator: Thêm behavior vào object dynamically
  • Facade: Cung cấp simplified interface cho complex subsystem
  • Flyweight: Chia sẻ objects để tiết kiệm memory
  • Proxy: Cung cấp placeholder cho another object

3. Behavioral Patterns

Những pattern liên quan đến communication giữa objects và assignment of responsibilities.

  • Chain of Responsibility: Pass request along a chain of handlers
  • Command: Encapsulate request as an object
  • Iterator: Truy cập elements của một collection sequentially
  • Mediator: Định nghĩa communication giữa objects
  • Memento: Capture and externalize object’s state
  • Observer: Define one-to-many dependency
  • State: Thay đổi behavior khi object’s state thay đổi
  • Strategy: Định nghĩa family of algorithms
  • Template Method: Định nghĩa skeleton của algorithm
  • Visitor: Định nghĩa operation trên elements của một object structure

When to Use

Sử dụng design patterns khi:

  • Gặp vấn đề thiết kế lặp đi lặp lại
  • Cần solution đã được kiểm chứng
  • Muốn improve communication trong team bằng common vocabulary

Anti-Patterns

Tránh sử dụng pattern không phù hợp:

  • Over-engineering: Áp dụng quá nhiều patterns
  • Golden Hammer: Muốn apply một pattern cho mọi vấn đề
  • Cargo Cult: Sử dụng pattern vì thấy người khác dùng, không hiểu tại sao

Reference

Xem chi tiết từng pattern: