Saya memiliki dua jenis klien, tipe " Observer " dan " Subjek ". Keduanya terkait dengan hierarki grup .
Pengamat akan menerima data (kalender) dari grup yang dikaitkan dengan seluruh hierarki yang berbeda. Data ini dihitung dengan menggabungkan data dari kelompok 'induk' dari kelompok yang mencoba mengumpulkan data (setiap kelompok hanya dapat memiliki satu induk ).
Subjek akan dapat membuat data (yang akan diterima Pengamat) dalam grup yang terkait dengannya. Ketika data dibuat dalam suatu grup, semua 'anak' dari grup akan memiliki data juga, dan mereka akan dapat membuat versi mereka sendiri dari area spesifik dari data , tetapi masih tertaut dengan data asli yang dibuat (dalam implementasi spesifik saya, data asli akan berisi periode waktu dan informasi utama, sementara subkelompok menentukan sisa data untuk penerima yang terhubung langsung ke grup masing-masing).
Namun, ketika Subjek membuat data, ia harus memeriksa apakah semua Pengamat yang terpengaruh memiliki data yang bertentangan dengan ini, yang berarti fungsi rekursif besar, sejauh yang saya bisa mengerti.
Jadi saya pikir ini dapat disimpulkan dengan fakta bahwa saya harus dapat memiliki hierarki yang dapat Anda naik turun , dan beberapa tempat dapat memperlakukan mereka secara keseluruhan (rekursi, pada dasarnya).
Juga, saya tidak hanya mengincar solusi yang berhasil. Saya berharap menemukan solusi yang relatif mudah dipahami (setidaknya berdasarkan arsitektur) dan juga cukup fleksibel untuk dapat dengan mudah menerima fungsionalitas tambahan di masa depan.
Apakah ada pola desain, atau praktik yang baik untuk dilakukan, untuk menyelesaikan masalah ini atau masalah hierarki serupa?
EDIT :
Inilah desain yang saya miliki:
Kelas "Phoenix" dinamai demikian karena saya belum memikirkan nama yang tepat.
Tapi selain itu saya harus bisa menyembunyikan kegiatan khusus untuk pengamat tertentu , meskipun mereka melekat padanya melalui kelompok.
Sedikit di luar topik :
Secara pribadi, saya merasa bahwa saya harus bisa memotong masalah ini menjadi masalah yang lebih kecil, tetapi saya tidak tahu caranya. Saya pikir itu karena itu melibatkan beberapa fungsi rekursif yang tidak terkait satu sama lain dan jenis klien yang berbeda yang perlu mendapatkan informasi dengan cara yang berbeda. Aku tidak bisa benar-benar membungkus kepalaku. Jika ada yang bisa membimbing saya ke arah bagaimana menjadi lebih baik dalam merangkum masalah hierarki, saya akan sangat senang menerima itu juga.
O(n)
algoritma yang efisien untuk struktur data yang terdefinisi dengan baik, saya dapat mengatasinya. Saya melihat Anda tidak menggunakan metode mutasi apa pun Group
dan struktur hierarki. Apakah saya berasumsi bahwa ini akan menjadi statis?
n
dengan derajat 0 sedangkan setiap simpul lainnya memiliki derajat minimal 1? Apakah setiap titik terhubungn
? Apakah jalan menujun
keunikan? Jika Anda bisa membuat daftar properti dari struktur data dan abstrak operasinya ke antarmuka - daftar metode - kami (saya) mungkin dapat membuat implementasi dari struktur data tersebut.