Tại sao mẫu Borg lại tốt hơn mẫu Singleton ?
Tôi hỏi vì tôi không thấy chúng dẫn đến điều gì khác biệt.
Borg:
class Borg:
__shared_state = {}
# init internal state variables here
__register = {}
def __init__(self):
self.__dict__ = self.__shared_state
if not self.__register:
self._init_default_register()
Singleton:
class Singleton:
def __init__(self):
# init internal state variables here
self.__register = {}
self._init_default_register()
# singleton mechanics external to class, for example this in the module
Singleton = Singleton()
Những gì tôi muốn hiển thị ở đây là đối tượng dịch vụ, cho dù được triển khai dưới dạng Borg hay Singleton, đều có trạng thái bên trong không tầm thường (nó cung cấp một số dịch vụ dựa trên nó) (ý tôi là nó phải là một cái gì đó hữu ích. Nó không phải là Singleton / Borg chỉ dành cho vui vẻ).
Và trạng thái này phải được hủy bỏ. Ở đây, việc triển khai Singleton đơn giản hơn, vì chúng tôi coi init là thiết lập của trạng thái toàn cục. Tôi thấy thật khó xử khi đối tượng Borg phải truy vấn trạng thái bên trong của nó để xem liệu nó có nên tự cập nhật hay không.
Tình trạng bên trong bạn càng trở nên tồi tệ hơn. Ví dụ: nếu đối tượng phải lắng nghe tín hiệu xé nhỏ của Ứng dụng để lưu đăng ký của nó vào đĩa, thì việc đăng ký đó cũng chỉ nên được thực hiện một lần và điều này dễ dàng hơn với Singleton.