Saya memiliki situasi di mana orang tua saya tahu tentang itu anak (duh) tetapi saya ingin anak itu dapat merujuk orang tua. Alasan untuk ini adalah bahwa saya ingin anak memiliki kemampuan untuk menetapkan dirinya sebagai yang paling penting atau paling tidak penting ketika rasanya seperti itu. Ketika anak melakukan ini, ia memindahkannya ke atas atau bawah anak-anak orang tua.
Di masa lalu saya telah menggunakan properti WeakReference pada anak untuk merujuk kembali ke orang tuanya, tapi saya merasa itu menambah overhead yang mengganggu, tapi mungkin itu hanya cara terbaik untuk melakukannya.
Apakah ini hanya ide yang buruk? Bagaimana Anda menerapkan kemampuan ini secara berbeda?
Pembaruan 1: Menambahkan lebih banyak konteks. Ini adalah sistem render sehingga wadah induk adalah daftar jendela yang dikelompokkan bersama. Item anak (jendela) yang mengatakan "Aku yang paling penting!" ingin dasarnya diberikan di bagian atas sisa jendela.
Orang tua hanyalah wadah logis untuk mengelompokkan anak-anak ini bersama-sama. Saya bisa melihat di mana menambahkan acara untuk memberi sinyal permintaan berada di atas adalah ide bagus. Namun implementasi (apa yang ingin dilakukan anak dengan orang tua), mengapa Anda tidak ingin memiliki tautan anak->? Daftar tertaut ganda melakukan hal ini sehingga orang dapat melintasi ke dan dari sesuatu.
sumber
WeakReference
. Pengumpul sampah .net dapat menangani siklus. Jika anak tidak lagi digunakan (orang tua tidak menunjuk ke sana), itu akan dikumpulkan meskipun berisi referensi ke orang tua.Jawaban:
Sering.
Bagaimana melakukannya dengan lebih baik? Anak itu seharusnya tidak tahu atau peduli bahwa itu ada dalam koleksi. Alih-alih menganggap dirinya penting, itu harus menandakan bahwa beberapa peristiwa yang diketahuinya telah terjadi sehingga siapa pun yang peduli (orang tua) dapat meningkatkan prioritasnya (atau apa pun aturan untuk konteks tempat tinggal anak itu). Saya tidak senang dengan hal itu, dan mungkin lebih suka pemisahan yang lebih baik antara model anak dan perilaku penting, tetapi tidak bisa diuraikan tanpa lebih banyak konteks.
[sunting]
Ya, sistem rendering adalah satu kasus di mana kepemilikan orang tua ... yah saya tidak ingin mengatakan itu masuk akal, tapi itu satu kasus di mana telah dilakukan dan bukan akhir dari dunia. Untuk memberikan fokus kontrol, saya masih lebih suka desain di mana pengendali input (atau apa pun) berjalan pohon dan tahu koleksi mana yang harus dipesan ulang daripada menemukan anak, memanggil sesuatu di atasnya yang tahu harus pergi ke induknya.
sumber
Bagaimana eksekusi sampai pada titik di mana anak memutuskan ingin menjadi yang paling penting? Apakah itu sampai di sana melalui orangtua? Jika ya, Anda dapat mengirim referensi ke induk ke metode itu.
misalnya. jika semua node memiliki semacam metode pembaruan () yang melakukan sesuatu seperti
Anda bisa mengubahnya menjadi
sumber
Saya tidak berpikir itu ide yang buruk. Anda dapat menyelesaikan ini dengan menambahkan nilai urutan pesanan ke setiap anak. Saya membayangkan sesuatu seperti "z-index" yang digunakan untuk menampilkan objek di atas atau di belakang satu sama lain di halaman web.
Saya tidak yakin bagaimana Anda akan membuat kode seperti ini, tetapi konsepnya terdengar masuk akal.
sumber