2012-10-21 25 views
6

Giống như nhiều nhà thiết kế và lập trình viên tham vọng, tôi đã tình cờ gặp thiết kế Hệ thống thực thể/thành phần, bao gồm các bài viết tuyệt vời khác nhau về chủ đề này . Và tôi, giống như nhiều người khác, đã tự mình thực hiện một hệ thống như vậy.Hệ thống thực thể - Lưu trữ các thành phần trong Trình quản lý so với thực thể

Thực thể khái niệm là một nhóm các thành phần, không có gì hơn là các gói dữ liệu được xử lý bởi một loạt các Hệ thống. Vì vậy, nó sẽ có vẻ hợp lý với tôi rằng một đối tượng thực thể có thể được sử dụng để giữ tất cả các thành phần liên kết với nó, nhưng công việc của người khác nói khác. Qua tất cả các nghiên cứu của tôi, dường như mọi người đều hiểu rằng một thực thể không khác gì một ID và bạn phải tránh mọi chi phí rơi vào cái bẫy của tư duy hướng đối tượng. Họ đề nghị lưu trữ các thành phần trong một người quản lý thay vào đó, nhưng không trực tiếp giải quyết những lợi thế của một thiết kế như vậy.

Cả hai thiết kế, thành phần được giữ trong thực thể so với kết quả của người quản lý đều có cùng kết quả? Vui lòng cho tôi biết nếu tôi hiểu nhầm/thiếu điều gì đó.

Trả lời

1

Tôi không phải là một chuyên gia có Hệ thống thành phần thực thể, nhưng đây là quan điểm của tôi về chủ đề từ những gì tôi đã đọc.

Tôi nghĩ rằng bạn không bao giờ nên truy cập trực tiếp vào các thành phần. Nếu bạn làm như vậy, các thành phần của bạn bắt đầu dựa vào nhau, và sau đó, khi bạn quyết định rằng bạn muốn thay đổi cách một thành phần hoạt động, tất cả các thành phần khác dựa vào thành phần bạn muốn thay đổi bây giờ phải được sửa.

Để tránh vấn đề này, các thành phần không nên biết gì về nhau. Mỗi người đều có một công việc và chỉ nên tập trung vào công việc đó. Nếu một số dữ liệu là cần thiết từ một thành phần khác (ví dụ, bạn có thể cần dữ liệu vị trí), bạn nên yêu cầu hệ thống khác cho dữ liệu, hoặc phát triển một hệ thống nhắn tin.

Tất nhiên, khi bạn thực sự bắt đầu viết mã, rất khó tuân thủ quy tắc này 100% thời gian, nhưng bạn có ý tưởng.

Một lý do khác để tránh lưu trữ thành phần trong thực thể là tốc độ. Khi các thành phần được chứa trong các hệ thống (nơi tất cả các thành phần tương tự được lưu trữ cùng nhau), bạn có thể xử lý một lượng lớn các thành phần một cách nhanh chóng. Bạn có cơ hội thiết lập bất kỳ dữ liệu nào mà chúng có thể được sử dụng lại, lặp lại và xử lý từng thành phần, sau đó giải phóng bất kỳ dữ liệu nào được sử dụng lại. Không chỉ điều này, nhưng mỗi hệ thống có thể (nên) có thể chạy trên một sợi riêng biệt, cho phép bạn dễ dàng tận dụng lợi thế của nhiều lõi.

Một lần nữa, trên thực tế, điều này không phải lúc nào cũng đúng 100%, nhưng đó là lý thuyết của nó.

Tóm lại, việc lưu giữ các thành phần trong hệ thống thay vì trong thực thể làm giảm sự cám dỗ truy cập trực tiếp các thành phần và cho phép cập nhật hàng loạt trong hệ thống. Tôi hy vọng điều này sẽ hữu ích và nếu bạn có bất kỳ câu hỏi nào, vui lòng cho tôi biết.

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