Tôi có hai loại máy khách, loại " Người quan sát " và loại " Chủ đề ". Cả hai đều liên kết với một hệ thống phân cấp của các nhóm .
Người quan sát sẽ nhận dữ liệu (lịch) từ các nhóm mà nó được liên kết trong suốt các cấu trúc phân cấp khác nhau. Dữ liệu này được tính bằng cách kết hợp dữ liệu từ các nhóm 'cha mẹ' của nhóm đang cố gắng thu thập dữ liệu (mỗi nhóm chỉ có thể có một phụ huynh ).
Chủ thể sẽ có thể tạo dữ liệu (mà Người quan sát sẽ nhận được) trong các nhóm mà họ được liên kết. Khi dữ liệu được tạo trong một nhóm, tất cả 'trẻ em' của nhóm cũng sẽ có dữ liệu và họ có thể tạo phiên bản riêng của một khu vực cụ thể của dữ liệu , nhưng vẫn được liên kết với dữ liệu gốc được tạo (trong Việc triển khai cụ thể của tôi, dữ liệu gốc sẽ chứa (các) khoảng thời gian và tiêu đề, trong khi các nhóm con chỉ định phần còn lại của dữ liệu cho các máy thu được liên kết trực tiếp với các nhóm tương ứng của chúng).
Tuy nhiên, khi Chủ thể tạo dữ liệu, nó phải kiểm tra xem tất cả các Quan sát viên bị ảnh hưởng có bất kỳ dữ liệu nào mâu thuẫn với điều này không, có nghĩa là một hàm đệ quy rất lớn, theo như tôi có thể hiểu.
Vì vậy, tôi nghĩ rằng điều này có thể được tóm tắt với thực tế là tôi cần có một hệ thống phân cấp mà bạn có thể đi lên và xuống , và một số nơi có thể coi chúng như một tổng thể (về cơ bản là đệ quy).
Ngoài ra, tôi không chỉ nhắm đến một giải pháp hiệu quả. Tôi hy vọng tìm thấy một giải pháp tương đối dễ hiểu (ít nhất là về kiến trúc) và cũng đủ linh hoạt để có thể dễ dàng nhận được chức năng bổ sung trong tương lai.
Có một mẫu thiết kế, hoặc một thực tiễn tốt để đi qua, để giải quyết vấn đề này hoặc các vấn đề phân cấp tương tự?
CHỈNH SỬA :
Đây là thiết kế tôi có:
Lớp "Phượng hoàng" được đặt tên theo cách đó vì tôi chưa nghĩ ra một tên thích hợp nào.
Nhưng bên cạnh đó, tôi cần có khả năng ẩn các hoạt động cụ thể cho các nhà quan sát cụ thể , mặc dù chúng được gắn liền với chúng thông qua các nhóm.
Một chút lạc đề :
Cá nhân, tôi cảm thấy rằng tôi sẽ có thể cắt vấn đề này xuống những vấn đề nhỏ hơn, nhưng nó thoát khỏi tôi như thế nào. Tôi nghĩ rằng bởi vì nó liên quan đến nhiều chức năng đệ quy không liên kết với nhau và các loại khách hàng khác nhau cần nhận thông tin theo những cách khác nhau. Tôi thực sự không thể quấn đầu xung quanh nó. Nếu bất cứ ai có thể hướng dẫn tôi theo hướng làm thế nào để trở nên tốt hơn trong việc gói gọn các vấn đề phân cấp, tôi cũng rất vui khi nhận được điều đó.
O(n)
thuật toán hiệu quả cho cấu trúc dữ liệu được xác định rõ thì tôi có thể làm việc trên đó. Tôi thấy bạn đã không đưa vào bất kỳ phương pháp đột biến nào Group
và cấu trúc của hệ thống phân cấp. Tôi có thể giả định rằng những điều này sẽ là tĩnh?
n
có độ bằng 0 trong khi mọi đỉnh khác có độ lớn ít nhất là 1? Là mọi đỉnh được kết nối vớin
? Là con đường dẫn đếnn
duy nhất? Nếu bạn có thể liệt kê các thuộc tính của cấu trúc dữ liệu và trừu tượng hóa các hoạt động của nó thành một giao diện - một danh sách các phương thức - chúng tôi (tôi) có thể đưa ra cách triển khai cấu trúc dữ liệu nói trên.