Avatar
1
Nguyen Thai Son Beginner
Flyweight, Visit và ứng dụng
em thấy Pattern này ít ai nhắc tới nhỉ, về mục đích Flyweight em đọc là làm giảm memory khi init file. Vậy a có thể chia sẻ 2 ứng dụng thực tế sử dụng 2 pattern này k ạ
  • Answer
Remain: 5
1 Answer
Avatar
tvd12 Beginner
tvd12 Beginner
  1. Hai design pattern này cực kỳ phổ biến chứ không hề hiếm gặp, Và Flyweight cũng không hề giảm memory khi init, thậm chí nó còn làm tăng memory khi init bởi vì nó khởi tạo trước các đối tượng về sau này sẽ chỉ cần sử dụng mà không cần khởi tạo nữa, như vậy hiệu năng sẽ tốt hơn và cũng phần nào đó tiết kiệm bộ nhớ trong thời gian chạy khi không phải khởi tạo quá nhiều đối tượng giống nhau.
  2. Hai ứng dụng thực tế đó là.
  • Với Flyweight: Khi em làm game, em có rất nhiều đối tượng người chơi, vậy thì không phải lúc nào em cũng khởi tạo đối tượng người chơi này, mà chỉ khởi tạo một lần lúc người chơi vào game, về sau này em sẽ truy xuất người chơi từ đối tượng playManager thông qua playerName.
  • Với Visitor: Hàm Collection.forEach của java có thể là một ví dụ điển hình, hoặc hàm visit của đồ thị cũng là một ứng dụng quan trọng của Visitor.
  • 0
  • Reply
forEach em tưởng là Iterator pattern để chạy qua từng Phần tử trong array chứ, anh có nhầm chỗ này không ạ  –  Nguyen Thai Son 1684033312000
Nếu em dùng for (item : list) thì là iterator, còn forEach(e => consum(e)) thì là visitor  –  tvd12 1684046030000