[Design Patterns] Main concepts
Mình update nhầm nên content bị xoá, mình sẽ viết lại sau
Design Pattern là gì?
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à các thiết kế giải pháp tối ưu cho các bài toán phổ biến
- Chúng được đúc rút từ "kiến thức, kinh nghiệm và trải nghiệm" nên sẽ mang tính "khoa học", "mạch lạc", "dễ maintain", "dễ mở rộng", "dễ sửa đổi" hơn so với việc chúng ta tự nghĩ ra một thiết kế
Ưu điểm:
- Giảm thời gian tìm solution (khi bạn đã index hết các DP trong đầu), thay vì tự mày mò tìm hoặc tự design
- Code tường minh, dễ dàng maintain, sửa đổi và mở rộng
- Tránh rủi ro về các lỗi tiềm ẩn, hoặc đôi khi là rủi ro về design tệ dẫn tới phải đập đi làm lại khi có những update nhất định hoặc nhu cầu mở rộng
- Tái sử dụng code
Tại sao cần biết Design Pattern
- Các kỹ sư lâu năm vẫn có thể giải quyết các bài toán mà không cần biết tới design pattern.
- Tuy nhiên Design Pattern là các solution được đúc rút từ "kiến thức, kinh nghiệm, và trải nghiệm", nó không chỉ design để giải quyết bài toán ngắn hạn trước mắt, mà còn có tính mở rộng và dễ dàng maintain, chỉnh sửa.
- Việc tự design solution để giải quyết các bài toán nhìn theo góc độ nào đó giống như bạn mua một chiếc máy giặt vô cùng hiện tại về sử dụng mà không đọc hướng dẫn sử dụng. Nó vừa mất thời gian mày mò, vừa không chắc đã dùng cách tối ưu nhất.
- Nhiều khi chúng ta đã áp dụng một vài design pattern nhưng không nói được thành lời
- DP giúp chúng ta có một ngôn ngữ chung
- DP giúp chúng ta có cách trình bày mạch lạc, khoa học hơn
- Hiểu và nhớ các Design Pattern cũng giúp chúng ta có một mindset tốt trong việc design, từ đó có thể tự design các DP khác, hoặc đơn giản là kết hợp các DP lại
Có những Design Patterns nào
Creational Patterns
- Sigleton
- Đảm bảo rằng chỉ có 1 instance duy nhất được tạo ra
- Cung cấp một global method để có thể access vào instance này
- Factory Method
- Factory Pattern cung cấp một Interface đại điện cho các instance trả về
- Subclass có thể lựa chọn implementation của Interface này.
Thường sẽ có dạng
NotiferFactory.getNotifier(NotifierType.TELEGRAM)
- Abtract Factory
- Builder
- Builder pattern giúp việc khởi tạo các đối tượng phức tạp với nhiều trường optional một cách đơn giản, thường qua các hàm
set
và một hàm finalbuild
- Builder pattern giúp việc khởi tạo các đối tượng phức tạp với nhiều trường optional một cách đơn giản, thường qua các hàm
- Prototype
- Giúp khởi tạo một đối tượng bằng cách clone một đối tượng đã tồn tại thay vì khởi tạo với từ khoá new.
- Đối tượng mới là một bản sao có thể giống 100% với đối tượng gốc, chúng ta có thể thay đổi dữ liệu của nó mà không ảnh hưởng đến đối tượng gốc.
- Object Pool
All rights reserved
Bình luận