Xin chào tất cả các bạn.
Có khi nào bạn nghe nói đến design pattern chưa ? Hay là các pattern Adapter,Factory,Builder ,Visitor….Nếu bạn là một lập trình viên thì tôi chắc chắn bạn đã nghe nói đến điều này. Với tôi nó xuất hiện trong tất cả vấn đề tôi giải quyết.
Design pattern rất quan trọng. ai cũng nói với tôi vậy đặc biệt là mấy người lớn tuổi,đàn anh đi trước. Vậy chúng ta hãy cùng xem nó là cái gì , nó có cái gì mà quan trọng với anh em mình thế.
Trước tiên hãy nói đến con đường chúng ta đi nhé.
Đoạn thứ nhất : chúng ta đi tìm Design Pattern là gì ?
Đoạn thứ hai : có bao nhiêu Pattern chúng ta nên biết ? với mỗi loại đó khi nào chúng ta dùng và dùng như thế nào ?
Hôm nay chúng ta sẽ đi định nghĩa design pattern là gì ? Tại sao chúng ta lại cần đến nó.
PATTERN là gì ?
Pattern là một giải pháp chung đối với một vấn đề nào đó thường được lặp lại trong nhiều dự án. Cũng có thể nói là Pattern là một khuôn mẫu được áp dụng cho nhiều dự án.Vì trong bất kỳ hệ thống hướng đối tượng nào chúng ta cũng sẽ gặp các vấn đề lặp lại.
Nghe định nghĩa các bạn đã hình dùng được pattern là gì chưa ? Hãy cố gắng ghi các vấn đề bạn thường bị lặp đi lặp lại nhiều lần trong các dự án phần mềm mà bạn thiết kế, và tự hỏi với những vấn đề này tôi có thể giải quyết bằng các khuôn mẫu đã đươc thiết kế sẵn không.
Tôi luôn muốn tìm đến sự chuyên nghiệp trong những dòng code. Muốn áp dụng những tiêu chuẩn quốc tế trong những thiết kế của mình. Vậy tại sao bạn lại không cố gắng áp dụng tiêu chuẩn pattern để giải quyết bài toán thiết kế của bạn nhỉ.
Hãy tiếp tục tập trung nhé.
Các đặc điểm chung của pattern.
1. Pattern có ỹ nghĩa về tái sử dụng ý tưởng hơn là mã lệnh.
Pattern làm giảm thời gian cho nhà thiết kế khi giải quyết vấn đề, Khi một người nào đó nói bạn nên áp dụng pattern này để giải quyết vấn đề nhé thì nếu bạn nắm rõ mô hình pattern đó thì bạn có thể giải quyết vấn đề đó rất nhanh. Nói chung khi nhắc đến một pattern nào đó thì chúng ta có thể hình dung được mô hình và ý tưởng giải quyết vấn đề. Tại sao lại nói tái sử dụng ý tưởng hơn mã lệnh. Bởi lẽ mã lệnh của chúng ta có thể khác nhau trong từng cách áp dụng pattern nhưng ý tưởng giải quyết vấn đề thì không thay đổi.
2. Pattern tái sử dụng kiến trúc và mô hình thiết kế phần mềm theo quy mô lớn.
Có đặc điểm nữa là chúng ta cần phân biệt “Framework” và “Pattern”. Vậy chúng khác nhau ở chỗ nào ?
Framework hỗ trợ tái sử dụng thiết kế và mã nguồn một cách chi tiết hơn. Trong khi đó thì pattern sử dụng ở mức tổng quát hơn.
3.Pattern đa tương thích.
Pattern không phụ thuộc vào ngôn ngữ lập trình,công nghệ hay các nền tảng lớn như J2EE hãy microsoft .Net. Vì vậy có thể coi pattern như là ngôn ngữ chung như UML hay các ngôn ngữ thiết kế khác.
Rút gọn lại chúng ta có được cái gì ?
Tiềm năng của Pattern là rất lớn. Nếu bạn thiết kế hoặc xem xét các phần mềm thì chúng ta có thể nhận biết họ sử dụng rất nhiều pattern. Các thiết kế sử dụng tiền tố và hậu tố là các tên pattern như adatper,factory,builder..
4. các nhóm pattern ?
4.1 Nhóm tạo (creation pattern) : Gồm Factory, Abstract Factory, Singleton, Prototype, Builder… Liên quan đến quá trình khởi tạo đối tượng cụ thể từ một định nghĩa trừu tượng (abstract class, interface).
4.2 Nhóm cấu trúc tĩnh (Structural Pattern): Gồm Proxy, Adapter, Wrapper, Bridge, Facade, Flyweight, Visitor… Liên quan đến vấn đề làm thế nào để các lớp và đối tượng kết hợp với nhau tạo thành các cấu trúc lớn hơn.
4.3 Nhóm tương tác động (Behavioral Pattern): Gồm Observer, State, Command, Iterator… Mô tả cách thức để các lớp hoặc đối tượng có thể giao tiếp với nhau.
5. Chúng ta nên học và áp dụng pattern như thế nào ?
a. Có phải chúng ta nên luôn luôn sử dụng pattern để giải quyết vấn đề không ?
Với tôi có lẽ muốn giải quyết tốt nhất một vấn đề trước tiên chúng ta phải hiểu rõ được các yêu cầu của vấn đề. Đừng ép buộc code vào một pattern nào đó. Do đó bạn phải hiểu sâu về các pattern từ đó tìm ra pattern phù hợp để giải quyết các yêu cầu của vấn đề. Không nhất thiết phải giải quyết tất cả mọi vấn đề với các pattern.
b. Việc nào là khó nhất khi đọc các pattern.
Việc khó nhất trong pattern là hiểu được chúng làm gì , tức là ý tưởng của nó là gì ? và khi nào thì nên sử dụng chúng khi nào thì không ?
Chúng ta thường bị trùng hoặc nhầm lẫn các pattern với nhau. cho nên việc chúng ta chia nhóm ra và học theo nhóm là cách hiệu quả. đồng thời cũng cần sự so sánh các pattern trong nhóm để thấy sự khác nhau.
Tôi sẽ chờ đợi các câu hỏi về pattern của các bạn.
Một số mẫu web - dịch vụ - ứng dụng mới đang bán chạy
Lasa nền tảng tạo website nhanh, chỉ 4 bước có ngay website chuyên nghiệp
Có thể cho cho 1 ví dụ nào cụ thể không Tom?
Ở đây tôi chỉ đưa ra cái mô tả chung nhất pattern.Vì thế tôi lấy ví dụ đơn giản về việc kết nối database.
yêu cầu bài toán kết nối database là không được mở quá nhiều kết nối tới database.
bởi vì như thế sẽ hoa tốn tài nguyên của ứng dụng. Đặc biệt là các ứng dụng nhỏ.
Vấn đề này được lặp đi lặp lại trong tất cả các phần mềm có sử dụng database.
Để giải quyết vấn đề này chúng ta dùng pattern Singleton. Còn Pattern singleton là thế nào hãy chờ các bài viết sau nhé.
Đọc xong bài viết thấy hơi mơ hồ về cái Patten, mình vẫn chưa hiểu nó là cái gì mà sao lại quan trọng vậy.
Mong những bài viết sau, bạn Tom Nguyễn có thể có những ví dụ nhỏ để người đọc hiểu rõ hơn vấn đề mà bài viết nhắc đến.
Xin cám ơn !
Bài viết tạm được, vì nhiều chữ quá, e mong lần sau có vài tấm hình cho vui mắt nhé a hì hì
Pingback: Blog SamSet
Bài viết khá hay. Tôi sẽ theo dòi các bài viết sau.