Tôi hiện đang thiết kế lại Hệ thống thực thể của mình , cho C ++ và tôi có rất nhiều Người quản lý. Trong thiết kế của tôi, tôi có các lớp này, để gắn kết thư viện của tôi với nhau. Tôi đã nghe thấy rất nhiều điều tồi tệ khi nói đến các lớp "người quản lý", có lẽ tôi không đặt tên cho các lớp học của mình một cách thích hợp. Tuy nhiên, tôi không có ý tưởng gì khác để đặt tên cho chúng.
Hầu hết các trình quản lý, trong thư viện của tôi, bao gồm các lớp này (mặc dù nó thay đổi một chút):
- Container - một container cho các đối tượng trong trình quản lý
- Các thuộc tính - thuộc tính cho các đối tượng trong trình quản lý
Trong thiết kế mới cho thư viện của tôi, tôi có các lớp cụ thể này, để gắn kết thư viện của tôi với nhau.
ElementManager - quản lý các thành phần trong Hệ thống thực thể
- Thành phần liên kết
- Thành phần
- Cảnh * - tham chiếu đến Cảnh (xem bên dưới)
SystemManager - quản lý các hệ thống trong Hệ thống thực thể
- SystemContainer
- Cảnh * - tham chiếu đến Cảnh (xem bên dưới)
EntityManager - quản lý các thực thể trong Hệ thống thực thể
- EntityPool - nhóm thực thể
- EntityAttribution - các thuộc tính của một thực thể (điều này sẽ chỉ có thể truy cập được đối với các lớp ElementContainer và System)
- Cảnh * - tham chiếu đến Cảnh (xem bên dưới)
Cảnh - liên kết tất cả các nhà quản lý với nhau
- Thành phần quản lý
- Quản lý hệ thống
- Quản lý thực thể
Tôi đã nghĩ đến việc chỉ cần đặt tất cả các thùng chứa / nhóm trong lớp Cảnh.
I E
Thay vì điều này:
Scene scene; // create a Scene
// NOTE:
// I technically could wrap this line in a createEntity() call in the Scene class
Entity entity = scene.getEntityManager().getPool().create();
Nó sẽ là thế này:
Scene scene; // create a Scene
Entity entity = scene.getEntityPool().create();
Nhưng, tôi không chắc chắn. Nếu tôi làm cái sau, điều đó có nghĩa là tôi sẽ có rất nhiều đối tượng và phương thức được khai báo bên trong lớp Cảnh của tôi.
GHI CHÚ:
- Một hệ thống thực thể đơn giản là một thiết kế được sử dụng cho các trò chơi. Nó bao gồm 3 phần chính: các thành phần, thực thể và hệ thống. Các thành phần chỉ là dữ liệu, có thể được "thêm" vào các thực thể, để các thực thể được phân biệt. Một thực thể được đại diện bởi một số nguyên. Các hệ thống chứa logic cho một thực thể, với các thành phần cụ thể.
- Lý do tôi thay đổi thiết kế cho thư viện của mình là vì tôi nghĩ nó có thể thay đổi khá nhiều, hiện tại tôi không thích cảm giác / dòng chảy của nó.