2010-04-03 37 views
5

Được coi là thực hành tốt hơn và/hoặc hiệu quả hơn để tạo chức năng 'đặt lại' cho một đối tượng cụ thể xóa/mặc định tất cả các biến thành viên cần thiết để cho phép hoạt động tiếp theo hay chỉ đơn giản là xây dựng một vật thể mới từ bên ngoài?Đặt lại đối tượng và xây dựng các đối tượng mới

Tôi đã nhìn thấy cả hai phương pháp được sử dụng rất nhiều, nhưng tôi không thể quyết định cái nào tốt hơn. Tất nhiên, đối với các lớp đại diện cho các kết nối cơ sở dữ liệu, bạn phải sử dụng một phương thức reset thay vì xây dựng một phương thức mới dẫn đến kết nối/ngắt kết nối không cần thiết, nhưng tôi đang nói nhiều hơn về các lớp trừu tượng.

Có ai có thể cho tôi một số ví dụ thực tế về thời điểm sử dụng mỗi phương pháp không? Trong trường hợp cụ thể của tôi, tôi đang suy nghĩ chủ yếu về ORM hoặc Model trong MVC. Ví dụ, nếu tôi muốn lấy một loạt các đối tượng cơ sở dữ liệu để hiển thị và sửa đổi chúng trong một thao tác.

Trả lời

3

Khi bạn sử dụng lại các đối tượng, bạn đang sử dụng mẫu Object Pool.

Một trong những vấn đề chính cần xem xét là bao nhiêu trạng thái các đối tượng này có và trạng thái đó cần phải được đặt lại cho người dùng tiếp theo. Với kết nối cơ sở dữ liệu, bạn không muốn phải thực hiện lại kết nối - nếu không bạn cũng có thể tạo một kết nối mới. Ý tưởng là để lại đối tượng được kết nối, nhưng để xóa bất kỳ kết quả nào.

Lý do không sử dụng hồ bơi đối tượng:

  • phức tạp của hồ bơi
  • chi phí bộ nhớ của việc có các đối tượng khởi tạo khi không cần thiết. Điều này thậm chí có thể làm chậm bộ sưu tập rác.
  • lập chính xác những gì nhà nước cần phải được thiết lập lại

lý do để sử dụng bể bơi đối tượng:

  • Phải mất quá nhiều thời gian để tạo ra hoặc phá hủy một đối tượng

Thông tin chi tiết trong một giấy của Kircher and Jain.

0

Việc khôi phục được thực hiện vì lý do hiệu suất. Cách tiếp cận mặc định là tạo đối tượng mới khi bạn cần, không tái chế một số đối tượng hiện có. Nếu bạn không lo lắng về php của bạn đang chậm hơn là chỉ cần tạo ra. Nếu bạn lo lắng về php bị chậm, bạn nên dừng lại và lo lắng về những thứ khác mà bạn dựa vào việc chậm hơn nhiều.

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