Vấn đề
gần đây tôi đã đọc rất nhiều về Singletons là xấu và cách tiêm phụ thuộc (mà tôi hiểu là "sử dụng giao diện") là tốt hơn. Khi tôi thực hiện một phần của điều này với các cuộc gọi lại / giao diện / DI và tuân thủ nguyên tắc phân tách giao diện, tôi đã kết thúc với một mớ hỗn độn.
Sự phụ thuộc của cha mẹ UI trong đó về cơ bản là tất cả các phần tử con của nó kết hợp với nhau, do đó, phân cấp của một thành phần UI càng cao, thì hàm tạo của nó càng phình to hơn.
Tất cả các cách trên đỉnh của hệ thống phân cấp UI là một lớp Ứng dụng, giữ thông tin về lựa chọn hiện tại và tham chiếu đến mô hình 3d cần phản ánh các thay đổi. Lớp ứng dụng đã triển khai 8 giao diện và đây chỉ là một phần năm của các sản phẩm (/ giao diện) sắp ra mắt!
Tôi hiện đang làm việc với một singleton giữ lựa chọn hiện tại và các thành phần UI có chức năng tự cập nhật. Hàm này đánh lừa các thành phần cây UI và UI sau đó truy cập vào đĩa đơn lựa chọn hiện tại nếu cần. Mã này có vẻ sạch hơn đối với tôi theo cách này.
Câu hỏi
Là một singleton có thể thích hợp cho dự án này?
Nếu không, có một lỗ hổng cơ bản trong suy nghĩ của tôi và / hoặc việc thực hiện DI khiến nó trở nên cồng kềnh không?
Thông tin bổ sung về dự án
Loại: Giỏ mua sắm căn hộ, có chuông và còi
Kích thước: 2 tháng cho mã và
Bảo trì giao diện người dùng : Không chạy cập nhật, nhưng có thể "phiên bản 2.0" sau
Môi trường: Sử dụng C # trong Unity, sử dụng Thực thể Hệ thống thành phần
Trong hầu hết các trường hợp, tương tác người dùng kích hoạt một số hành động. Ví dụ: khi người dùng chọn một mục
- phần UI hiển thị mục đó và mô tả của nó cần được cập nhật. Đối với điều này, nó cũng cần có được một số thông tin từ mô hình 3d để tính giá.
- hơn nữa giao diện người dùng, tổng giá cần phải được cập nhật
- một hàm tương ứng trong một lớp trên mô hình 3d cần được gọi để hiển thị các thay đổi ở đó