2012-02-17 24 views

Trả lời

26

Một sự khác biệt về trọng số đó là trường hợp không thay đổi thường xuyên, trong khi tài nguyên có được từ hồ bơi thường có thể thay đổi. Vì vậy, bạn tạo flyweights để tránh chi phí liên tục tạo ra nhiều trường hợp của các đối tượng có cùng trạng thái (vì chúng đều giống nhau, bạn chỉ cần tạo một và sử dụng lại nó trong tất cả các vị trí trong ứng dụng của bạn), trong khi tài nguyên một hồ bơi là những tài nguyên cụ thể mà bạn muốn kiểm soát cá nhân và có thể có trạng thái khác nhau, nhưng bạn không muốn trả chi phí tạo ra và hủy diệt bởi vì tất cả chúng đều được khởi tạo trong cùng một trạng thái.

+1

Câu trả lời hay nhất! Tôi nghĩ rằng, Flyweight thường được sử dụng để giảm thiểu khối lượng bộ nhớ, bởi vì nó chỉ chứa các mục duy nhất. Đối tượng hồ bơi cho phép để cải thiện hiệu suất nhưng dẫn đến tiêu thụ bộ nhớ cao. – Warlock

+1

Đối với một số mở rộng, tôi nghĩ rằng mô hình flyweight cũng lưu trữ một cái gì đó. Nếu trọng lượng không thay đổi duy nhất chiếm quá nhiều bộ nhớ, rất khó để nói rằng bộ nhớ tiết kiệm được. Bạn có thể nói nó tốt hơn bạn tạo ra những vật thể bất biến này một lần và một lần nữa. – Chao

5

Ít nhất hai sự khác biệt lớn đến tâm:

  • Bể bơi đối tượng là một chứa cho một tập các đối tượng miền trong khi một hạng ruồi thường một đối tượng tên miền.
  • Một nhóm đối tượng thường chứa một tập các đối tượng tương tự có thể được chia sẻ đồng thời, chẳng hạn như kết nối cơ sở dữ liệu, trong khi thường có một tập hợp các đối tượng khác nhau, mỗi đại diện cho một trạng thái khác nhau.
1

Trang web này mô tả cả hai mẫu với ví dụ cụ thể. Nó làm một công việc khá goo làm rõ sự khác biệt và hỗ trợ phản ứng của Gabriel ở trên. http://www.oodesign.com/

Các vấn đề liên quan