Đó là cách phù hợp để sử dụng nhà máy. Nhà máy không chỉ là cách để tạo ra các đối tượng, mà còn là cách để nói: Tôi cần một khởi tạo đặc biệt cho các loại đối tượng này. Với vấn đề của bạn, tôi nghĩ giải pháp tốt nhất sẽ là thông báo cho nhà máy với một số sự kiện, như được xử lý. Vì vậy, việc tạo đối tượng của bạn sẽ được thực hiện theo cách như vậy: tạo, đăng ký nhà máy với sự kiện của đối tượng mới được tạo. Mỗi khi đối tượng bị xóa, bạn sẽ thông báo cho nhà máy về điều đó và thực hiện hành động bạn cần.
Nếu bạn không thích đặt nó vào nhà máy, bạn có thể ủy quyền nó cho một số loại đối tượng khác, như DeathKeeper ;-). Vì vậy, mã của bạn sẽ trông giống như thế này:
//Inside factory create method
MyObject obj = GetNewInitializedObject();
_detahKeeper.RegisterObject(obj);
return obj;
Bây giờ mỗi khi bạn cần xóa đối tượng, đối tượng của bạn sẽ thông báo cho kẻ chết và nó sẽ xử lý tất cả logic. Bằng cách này, tôi không biết làm thế nào nó hoạt động, nhưng bạn có thể sử dụng giao diện IDisposable để làm logic tùy chỉnh để xử lý tài nguyên được tổ chức bởi đối tượng. Quyết định phụ thuộc vào những gì có trong dự án của bạn và tùy thuộc vào bạn.
Nguồn
2009-09-16 04:01:35
Bạn có ý nghĩa gì với 'xóa'? Giải phóng bộ nhớ, hoặc xóa khỏi kho dữ liệu? –
Khi xóa, tôi có nghĩa là xóa nó khỏi kho dữ liệu, điều này sẽ được thực hiện bởi kho lưu trữ. –
và loại cấu hình nào được thực hiện trong đối tượng nhà máy "? Một đối tượng phải có khả năng tự dọn dẹp sau đó, nhiệm vụ của các destructors và/hoặc xử lý. Tôi sẽ lập luận rằng một nhà máy không nên biết bất cứ điều gì của các đối tượng nó đã tạo ra. –