Design Pattern là gì? … Đó là một câu hỏi mà hầu như chổ nào tuyển dụng developer đều hỏi cả! Đối với mình khi tuyển dụng hỏi câu này xem người mình sắp đánh PASS có thể show up tầm hiểu biết và việc vận dụng trong lập trình ra sao!
Nhiều bạn đọc khái niệm này như trả bài nhưng thật sự thì chưa hiểu rõ WHY USE IT? nếu là một người có mindset tốt họ sẽ hiểu nhiều hơn cái khái niệm WHAT IS THE DESIGN PATTERN? họ còn hiểu WHY USE IT? HOW TO USE IT BETTER?
Theo mình thì khi nhận câu hỏi này thì nên nêu ra 3 câu hỏi WHAT? WHY? HOW? về Design Pattern! Và trả lời nó một cách gọn gàn dễ hiểu.
WHAT? -> Design pattern là mẫu thiết kế do mấy ông developer lâu năm giàu kinh nghiệm định nghĩa ra hay là mình tự nghĩ ra thôi áp dụng vào dev OOP ngon là được.
WHY? -> Mẫu thiết kế mình tạo ra không phải để chơi mà để mọi người dùng chung nên nó phải dễ dùng cho mọi người dễ thống nhất quan điểm và giải quyết tốt vấn đề nào đó trong dự án. Khi gặp vấn đề tương tự móc ra dùng ngay và luôn.
Ví dụ: Mỗi lần gặp dự án web thì mình lấy cái MVC ra dùng hoặc cái Repository pattern ra dùng cho lẹ. Vì trong team ai cũng biết cái design củ èm đó hết 😀
HOW? -> Design pattern mà kể ra thì có cả ngàn cái, mỗi ông dev đều có mindset riêng ổng lụm cái singleton về chế chút ra cái design pattern mới rồi! Bởi thế không phải design pattern nào cũng tốt, nó chỉ tốt khi vào đúng vấn đề thôi! Nên bản thân mình dùng sao cho tối ưu nhất thì dựa trên kinh nghiệm áp dụng design pattern vào dự án thực tiễn.
Trên bí kiếp truyền lại thì các chân nhận chia Design Pattern làm 3 nhóm bao chính:
– Creational Pattern (nhóm khởi tạo) gồm: Abstract Factory, Factory Method, Singleton, Builder, Prototype. Nó sẽ giúp bạn trong việc khởi tạo đối tượng, như bạn biết để khởi tạo bạn phải sử dụng từ khóa new, nhóm Creational Pattern sẽ sử dụng một số thủ thuật để khởi tạo đối tượng mà bạn sẽ không nhìn thấy từ khóa này.
– Structural Pattern (nhóm cấu trúc) gồm: Adapter, Bridge, Composite, Decorator, Facade, Proxy và Flyweight.. Nó dùng để thiết lập, định nghĩa quan hệ giữa các đối tượng.
– Behavioral Pattern gồm: Interpreter, Template Method, Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy và Visitor. Nhóm này dùng trong thực hiện các hành vi của đối tượng.
Design Pattern giúp bạn tái sử dụng mã lệnh và dẽ dàng mở rộng.
Để chuẩn bị học Design Pattern bạn cần phải nắm chắc các khái niệm sau:
– Bốn đặc tính của OOP: Thừa kế, Đa hình, Trừu tượng, Bao đóng.
– Khái niệm interface và abstract. Cái này cực kỳ quan trọng, để hiểu và áp dụng 2 khái niệm này có thể sẽ mất một thời gian, nhưng khi bạn nắm chắc nó bạn sẽ thấy nó thực sự cần thiết.
– Bỏ tư duy theo lối cấu trúc, nâng tư duy hoàn toàn OOP.
Đọc thêm https://lcdung.top/he-thong-23-mau-design-patterns/ để biết thêm các mẫu Design patterns