Khác biệt giữa bản sửa đổi của “Flyweight pattern”

Nội dung được xóa Nội dung được thêm vào
Alexbot (thảo luận | đóng góp)
n robot Thêm: ko:Flyweight pattern
Cumeo89 (thảo luận | đóng góp)
n chính tả
Dòng 3:
Trong mẫu '''flyweight''', dữ liệu không có các [[con trỏ]] (pointer) đến các phương thức của kiểu dữ liệu đó, vì như thế sẽ tốn rất nhiều bộ nhớ. Thay vào đó, các [[chương trình con]] (subroutine) sẽ được gọi trực tiếp. Trong một vài trường hợp, flyweight inheritance được thực hiện bằng cách "shift-in" và "shift-out" các ''data markers'' dưới dạng các chu trình tác vụ ở mức cao (higher-level operation cycles) thông qua một mảng các ''flyweight data''.
 
Một ví dụ cổ điển của mẫu flyweight là các kí tự được lưu trong một [[bộ xử lí văn bản]] (word processor). Mỗi kí tự đại diện cho một đối tượng mà có dữ liệu là [[loại font]] (font face), kích thước font, và các dữ liệu định dạng khác. Bạn có thể tưởng tượng là, với một [[tài liệu]] (document) lơn với cấu trúc dữ liệu như thế này thì sẽ bộ xử lí văn bản sẽ khó mà có thể xử lí được. Hơn nữa, vì hầu hết dữ liệu dạng này là lặp lại, phải có một cách để giảm việc lưu giữ này - đó chính là mẫu Flyweight. Mỗi đối tượng kí tự sẽ chứa một [[tham khảo]] đến một đối tượng định dạng riêng rẽ mà chính đối tượng này sẽ chữachứa các thuộc tính cần thiết. Điều này sẽ giảm một lượng lớn sự lưu giữ bằng cách kết hợp mọi kí tự có định dạng giống nhau trở thành các đối tượng đơn chỉ chứa tham khảo đến cùng một đối tượng đơn chứa định dạng chung đó.
 
Cũng có một phiên bản của mẫu này dùng cho cấu trúc XML.