Tổng quan về Series
Xin chào các bạn, hẳn đã là dev ai cũng từng đi ngang hoặc lướt qua một lần về thuật ngữ Design Pattern (DP) rồi nhỉ. Vậy nó là gì mà khiến cho bao "chàng" dev phải điêu đứng và phải thốt lên nó quá khó nhai và hiểu hết về nó, nên bằng sự cật lực đi tìm miền đất hứa với hai bàn tay trắng, mình sẽ bóc phốt từng DP mà mình cho là xứng đáng!!!
Series này sử dụng ngôn ngữ Dart và framework Flutter để thực tế hoá các ví dụ về DP, nếu các bạn chưa biết gì về Flutter có thể tham khảo series này của một người Leader đáng ngưỡng mộ của mình - Nguyễn Thành Minh "Flutter From Zero to Hero"
Design Pattern..??
Lập trình hiện nay không còn là công việc đặc thù của những chuyên gia mới làm được, mà có thể với bất kỳ ai có một chiếc máy tính đều có thể trở thành một lập trình viên. Chính vì vậy mà có rất nhiều ngôn ngữ được xây dựng nên kèm những thư viện phát triển không ngừng nghỉ, đi kèm với đó là xuất hiện những vấn đề chung mà bất kì ngôn ngữ nào cũng gặp tương tự, nên DP ra đời là giải pháp để giải quyết vấn đề chung lặp lại, thường xảy ra trong một phần mềm.
Có rất nhiều loại DP khác nhau, ứng dụng vào những mục đích khác nhau, nó đưa ra một quy tắc và thiết kế để làm mã nguồn trở nên mềm dẻo hơn, dễ mở rộng hơn và giảm thiểu được code trùng lặp hay phải viết quá nhiều
Tưởng tượng nó như những kinh nghiệm mà ông cha ta từ xa xưa đã để lại, và con cháu chỉ cần thực hành làm theo thì mọi việc sẽ trở nên dễ giải quyết hơn, có hướng đi đúng đắn hơn và nhanh hơn là tự vắt óc suy nghĩ rất nhiều (mà có khi còn sai, hehe)
Mục tiêu
Series này sẽ đưa ra các loại DP thuộc từng nhóm khác nhau: creational (khởi tạo) , structural (cấu trúc), behavioral (hành vi) chủ yếu phục vụ cho Flutter, sẽ có cả lý thuyết và ví dụ áp dụng vào công việc hằng ngày của mình
Mã nguồn về ví dụ mình sẽ đưa lên Github và cập nhật dần dần. Mã nguồn sẽ sử dụng ngôn ngữ Dart, và sẽ đơn giản hoá nhất nên đừng lo nếu bạn chưa kịp học về nó nhé ^^
Creational Design Pattern
Mẫu thiết kế này hướng tới việc khởi tạo class ban đầu. Bao gồm các cách khởi tạo khác nhau và làm cho hệ thống độc lập với các đối tượng được tạo ra.
Một số mẫu thiết kế tiêu biểu:
- Singleton
- Prototype
- Factory Method
- Builder
- Abstract Factory
Structural Design Pattern
Mẫu thiết kế này hướng tới việc kết nối các đối tượng để hình thành cấu trúc lớn hơn, mở rộng hệ thống.
Một số mẫu thiết kế tiêu biểu:
- Adapter
- Composite
- Facade
- Decorator
- Bridge
- Proxy
- Flyweight
Behavioral Design Pattern
Mẫu thiết kế này hướng tới việc tương tác lẫn nhau giữa các đối tượng và phân chia trách nhiệm cho chúng.
Một số mẫu thiết kế tiêu biểu:
- Template Method
- Strategy
- State
- Interpeter
- Iterator
- Command
- Memento
- Chain of responsibility
- Visitor
- Mediator
- Observe
Tổng kết
Vậy qua phần giới thiệu sơ qua, mình hi vọng các bạn có cái nhìn tổng quan về nó, để đi vào cụ thể chi tiết đón chờ những phần tiếp theo của mình nhé ^^
Phần tiếp theo mình sẽ giới thiệu Design Pattern đầu tiên - Singleton - "Anh là duy nhất"