DESIGN PATTERN - NỀN TẢNG ĐỂ BẠN PASS PHỎNG VẤN TRONG TƯƠNG LAI

Xin chào mọi người, tôi John lại lên đây, hôm nay tôi sẽ cùng mọi người tìm hiểu 1 kiến thức CỰC KỲ QUAN TRỌNG trong ngành IT của chúng ta, đây sẽ là nền tảng tăng tỷ lệ pass vòng phỏng vấn địa ngục của mọi người trong tương lai đấy, đừng xem thường nó, dù mọi người có code bằng ngôn ngữ gì hay project to nhỏ ra sao thì luôn luôn có đất cho anh bạn này biểu diễn, anh bạn này chính là DESIGN PATTERN.

Chắc hẳn ai cũng đã nghe đến cụm từ này ít nhất 1 lần rồi và thậm chí mọi người đã từng áp dụng nó rồi đấy nhưng mấy ai biết tên gọi của nó đâu không nào? Để tôi nói ngắn gọn cho mọi người dễ hình dung ra nhé: DESIGN PATTERN là các giải pháp tổng thể đã được các bậc tiền bối đi trước tối ưu hóa và có thể tái sử dụng nó cho các vấn đề phổ biến trong thiết kế phần mềm, mọi người đừng nên nghi ngờ độ chính xác của nó vì nó đã được rất nhiều người đi trước chứng thực rồi. Tác dụng của Design Pattern có thể giúp chúng ta tăng tốc độ phát triển phần mềm, tái sử dụng code và hạn chế lỗi tiềm ẩn, dễ mở rộng nâng cấp.


Design Pattern có tổng cộng là 23 Loại, xếp theo thứ tự từ 1 - 5 sao về độ khó học và phạm vi sử dụng phổ biến. Hôm nay tôi sẽ giới thiệu đến mọi người 5 Design Pattern có độ học dễ và phổ biến nhất để mọi người có vốn chém gió vòng phỏng vấn nhá, hehehe.

  1. SINGLETON PATTERN (Độ khó: 1 ⭐️ - Phổ biến: 5 ⭐️)
  • Singleton là 1 mẫu thiết kế giúp đảm bảo code của chúng ta chỉ có 1 lớp duy nhất (instance) và thông qua instance này có thể truy cập tất cả thuộc tính của class đó. Điều này giúp chúng ta đảm bảo quản lý việc truy cập tốt hơn và tránh xung đột trong phần mềm.
  • Ví dụ: mọi người chắc ai cũng biết Task Manager là một công cụ quản lý tác vụ hệ điều hành của Windows, nó giúp bạn theo dõi các ứng dụng hiện tại đang chạy trên máy của mọi người. Thế nhưng chúng ta chỉ có thể mở 1 lần duy nhất 1 Task Manager thôi vì nó có nhiều thông số như memory, process.. các thông số này đều tính toán dựa trên hành động hiện tại của máy vì thế nếu mở 2 task lên 1 lúc thì thông số sẽ bị sai lệch xung đột dữ liệu, từ đó sẽ dẫn đến rất nhiều tác hại phía sau. Task Manager chính là đang sử dụng Singleton Pattern đó
  1. STRATEGY PATTERN (Độ khó: 1 ⭐️ - Phổ biến: 5 ⭐️)
  • Strategy là 1 mẫu thiết kế giúp chúng ta ghi các function chiến lược vào trong 1 class, tưởng tượng Strategy Pattern là 1 cái hộp công cụ, trong mỗi tình huống cụ thể bạn có thể chọn ra 1 công cụ phù hợp nhất trong chiếc hộp này để giải quyết vấn đề. Strategy giúp code sẽ có tính linh hoạt hơn, dễ dàng tái sử dụng code và mở rộng phát triển thêm function.
  • Ví dụ, bạn đang build 1 app thanh toán online, khách hàng thì có nhiều thanh toán momo, có người dùng zalo pay… Thay vì dùng 1 đoạn code if else để ghi code xử lý thanh toán thì bạn có thể ghi 1 function riêng cho từng hình thức thanh toán - đây là công cụ, sau đó bạn tạo 1 class chung - là chiếc hộp - và dùng if else để gọi tới từng function thanh toán mà khách hàng yêu cầu, trong class chung này bạn chỉ để tên function của từng hình thức thanh toán và gọi tới chúng thôi.
  1. FACADE PATTERN (Độ khó: 1 ⭐️- Phổ biến: 5 ⭐️)

  • Facade là 1 mẫu thiết kế cung cấp giao diện chung đơn giản, che giấu đi sự phức tạp của phần mềm phía sau, người dùng chỉ nhìn thấy đơn giản 1 click là xong nhưng không thể biết phía sau 1 click đó có bao nhiêu task, bao nhiêu function được gọi tới implement. Facade pattern giúp code dễ dàng kiểm soát, che giấu sự phức tạp của system và tăng tính tái sử dụng code.
  • Ví dụ khi bạn shopping online ở Shopee, bạn chỉ cần chọn 1 đơn hàng, chọn địa chỉ rồi click thanh toán thế là xong đợi nhận hàng, còn các hoạt động phức tạp phía sau như tính tiền ship, trừ tiền voucher hay tương tác nhà vận chuyển bạn không cần quan tâm.
  1. OBSERVER PATTERN (Độ khó: 2 ⭐️- Phổ biến: 5 ⭐️)
  • Observer là 1 mẫu thiết kế được ứng dụng rất nhiều trong code cũng như đời sống của chúng ta, nó định nghĩa mối quan hệ phụ thuộc 1 - nhiều của các đối tượng để khi mà đối tượng này thay đổi thì các bên phụ thuộc nó sẽ nhận được thông báo. Observer thường là sử dụng cho việc thông báo.
  • Ví dụ khi bạn đăng ký 1 youtuber nào đó thì youtuber đó sẽ là đối tượng và bạn chính là observer, mỗi khi youtuber đó đăng new video thì bạn và những người subscribe anh ta (những observer) sẽ nhận được thông báo 1 cách tự động.
  • Ví dụ trong cuộc sống thì cây cột đèn giao thông là đối tượng chính, những người đi đường là observer, khi cây đèn đổi màu tín hiệu từ đỏ sang xanh là nó đang thông báo đến các observer tín hiệu được di chuyển. Rất thực tế.
  1. ADAPTER PATTERN (Độ khó: 2 ⭐️- Phổ biến: 5 ⭐️)
  • Adapter là 1 mẫu thiết kế giúp chuyển đổi interface của một class thành 1 interface khác mà client mong muốn. Adapter giúp code có thể mở rộng cải thiện mà không ảnh hưởng đến hệ thống hiện tại, dễ dàng tái sử dụng và che giấu sự phức tạp của system.
  • Ví dụ như ở Amazon chỉ chấp nhận thanh toán khi bằng Visa nhưng bạn lại chỉ có ví Momo, lúc này Amazon cung cấp cho bạn 1 option là bằng có thể nhập thông tin ví Momo rồi thanh toán. Sau khi hoàn thành thanh toán Momo thì bên trong system Amazon sẽ chuyển toàn bộ thông tin thanh toán Momo của bạn sang hình thức của thẻ Visa và nó dùng Visa đó thanh toán đơn hàng bạn đặt. Đơn giản là sự chuyển đổi sang phương thức cho phù hợp với system đó thôi
Qua giới thiệu 5 DESIGN PATTERN này chắc mọi người cũng nhận ra mình đã từng áp dụng nó trong code ít nhất 1 lần rồi mà không hề biết nó chính là Pattern có đúng không, lúc đầu tôi mới tìm hiểu thì cũng giật mình nhận ra như thế đó hehehe. Mong bài viết này giúp mọi người hiểu rõ hơn về Design Pattern và giúp ích cho mọi người trong tương lai.
Xin chào và See you Again 
❤

Đăng nhận xét

Mới hơn Cũ hơn

Biểu mẫu liên hệ