Tôi đã nghe vô số lần về những cạm bẫy của Singletons / toàn cầu và tôi hiểu tại sao họ thường cau mày như vậy.
Điều tôi không hiểu là sự thay thế thanh lịch, không lộn xộn là gì. Có vẻ như giải pháp thay thế cho việc sử dụng Singletons / toàn cầu luôn liên quan đến việc chuyển các đối tượng xuống một triệu cấp thông qua các đối tượng động cơ của bạn cho đến khi chúng tiếp cận các đối tượng cần chúng.
Ví dụ: trong trò chơi của tôi, tôi tải trước một số tài sản khi trò chơi bắt đầu. Những tài sản này không được sử dụng cho đến sau này khi người chơi điều hướng qua menu chính và vào trò chơi. Tôi có nên chuyển dữ liệu này từ đối tượng Trò chơi của mình sang đối tượng ScreenManager của mình không (mặc dù thực tế là chỉ có một Màn hình thực sự quan tâm đến dữ liệu này), sau đó đến đối tượng Màn hình thích hợp và bất kỳ nơi nào khác?
Có vẻ như tôi đang giao dịch dữ liệu trạng thái toàn cầu để tiêm phụ thuộc lộn xộn, truyền dữ liệu đến các đối tượng thậm chí không quan tâm đến dữ liệu ngoại trừ mục đích truyền dữ liệu đó cho các đối tượng con.
Đây có phải là một trường hợp mà một Singleton sẽ là một điều tốt, hoặc có một số giải pháp thanh lịch mà tôi đang thiếu?