What’s a design pattern?
What’s a design pattern?
Design patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.
- Design pattern là 1 phương pháp điển hình để giải quyết các vấn đề của phát triển phần mềm.
- Chúng giống như những bản thiết kế mẫu đầu tiên để từ đó xây dựng code.
- Không phải là đoạn code cụ thể mà là khái niệm để giải quyết các vấn đề cụ thể.
Catalog
I. Creational pattern:
Những Design pattern loại này cung cấp một giải pháp để tạo ra các object và che giấu được logic của việc tạo ra nó, thay vì tạo ra object một cách trực tiếp bằng cách sử dụng method new. Điều này giúp cho chương trình trở nên mềm dẻo hơn trong việc quyết định object nào cần được tạo ra trong những tình huống được đưa ra.
# | Name | Description |
---|---|---|
1 | Singleton | Create chỉ 1 instance của object dù được call nhiều lần trong app. |
2 | Factory Method | Create object mà không chỉ định cấu trúc, tạo 1 instance bằng method mà không dùng operator new Foo |
3 | Abstract factory | Create object mà không chỉ định cấu trúc, các class cùng implement 1 interface |
4 | Builder | Xây dụng 1 đối tượng phức tạp bằng cách xử dụng các đối tượng đơn giản theo từng step. |
5 | Prototype | Sao chép 1 đối tượng đã có mà không cần new Class. |
6 | Pool | Quản lí các object có thể tái sử dụng bằng các 'pool' |
II. Structural pattern:
Những Design pattern loại này liên quan tới class và các thành phần của object. Nó dùng để thiết lập, định nghĩa quan hệ giữa các đối tượng.
# | Name | Description |
---|---|---|
1 | Adapter | Kết nối các object độc lập, có thể làm việc cùng nhau |
2 | Bridge | Tách phần abstraction (structural) với phần implementation(xử lí business logic) |
3 | Composite | Xử lí 1 nhóm object tương tự như 1 object |
4 | Decorator | Add chức năng mới mà không làm ảnh hưởng đến object. |
5 | Facade | Cung cấp 1 interface đơn giản cho 1 hệ thống phức tạp hơn. |
6 | Flyweight | Tái sử dụng các object đã tồn tại, giảm tải bộ nhớ. |
7 | Proxy | Tạo object sẻ ủy quyền hoặc đại diện cho object khác. |
III. Behavioral pattern:
Nhóm này 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.
# | Name | Description |
---|---|---|
1 | Chain of Responsibility | Xây dựng 1 chuỗi quá trình xử lí cho đến khi 1 trong số đó xử lí được yêu cầu. |
2 | Command | Chuyển yêu cầu thành object chứa tất cả thông tin về yêu cầu. |
3 | Iterator | Truy cập tuần tự các phần tử của 1 cấu trúc phức tạp. |
4 | Mediator | Giảm sự liên kết (reduces coupling) giữa các thành phần bằng cách làm cho chúng giao tiếp gián tiếp Thông qua 1 đối tượng trung gian (mediator). |
5 | Memento | Lưu lại trạng thái của 1 đối tượng và có thể khôi phục lại nó trong tương lai. |
6 | Observer | LThông báo về những thay đổi trạng thái của object cho object khác. |
7 | State | Thay đổi hành vi (behavior) của object khi trạng thái bên trong của object thay đổi |
8 | Strategy | Xác định một nhóm thuật toán, đặt mỗi thuật toán vào một lớp riêng biệt và làm cho các đối tượng của chúng có thể hoán đổi cho nhau. |
9 | Template Method | Xác định khung của 1 thuật toán trong base class, các class con có thể overide lại các step mà không làm thay đổi cấu trúc thuật toán. |
10 | Visitor | Tách behavior ra khỏi object, từ đó có thể thêm behavior mới vào hệ thống mà không làm thay đổi code hiện tại |
refer: https://refactoring.guru/design-patterns/what-is-pattern