Diğer cevapların da belirttiği gibi, bu doğal olarak zayıf bir tasarım değildir. Yuvalanmış sınıflar ve onları yuvalayanlar arasında sıkı bağlantı oluşturabilir, ancak başvuruları yuvalamak tasarıma bir değer sağlarsa bağlantıyı gevşetmek geçerli bir seçenek olmayabilir.
Olası bir çözüm, denetleyici sınıfındaki iç içe referansları "düzleştirmek" dir.
Parametreyi iç içe geçmiş nesnelerden birkaç kez geçirmek yerine, denetleyici sınıfında iç içe geçmiş nesnelerin tümüne başvuruda bulunabilirsiniz.
Bunun tam olarak nasıl uygulandığı (veya geçerli bir çözüm olsa bile) sistemin şu anki tasarımına bağlıdır:
- Çok fazla karmaşıklaşmadan denetleyicideki yuvalanmış nesnelerin bir tür haritasını tutabiliyor musunuz?
- Parametreyi uygun iç içe geçmiş nesneye geçirdiğinizde, iç içe geçmiş nesne derhal parametreyi tanıyabilir mi veya iç içe geçmiş nesnelerden geçirilirken ortaya çıkan ek işlevler var mıydı?
- vb.
Bu bir GXT istemcisi için MVC tasarım modelinde karşılaştığım bir konudur. GUI bileşenlerimiz, birkaç katman için yuvalanmış GUI bileşenleri içeriyordu. Model verileri güncellendiğinde, uygun bileşen (ler) e ulaşana kadar birkaç katmandan geçirmeyi bıraktık. GUI bileşenleri arasında istenmeyen bir bağlanma yarattı, çünkü yeni bir GUI bileşen sınıfının model verilerini kabul etmesini istiyorsak, model verilerini, yeni sınıfı içeren tüm GUI bileşenlerinde güncellemek için yöntemler oluşturmak zorunda kaldık.
Bunu düzeltmek için, View sınıfında iç içe geçmiş tüm GUI bileşenlerine bir referanslar haritası oluşturduk, böylece model verileri her güncellendiğinde, View güncellenmiş model verilerini doğrudan ihtiyaç duyduğu GUI bileşenlerine gönderebilir, öykünün sonuna . Bu iyi çalıştı çünkü her bir GUI bileşeninin yalnızca tek örnekleri vardı. Bazı GUI bileşenlerinin birden fazla örneği varsa, hangi kopyanın güncellenmesi gerektiğini tanımlamayı zorlaştırıyorsa, o kadar iyi çalışmadığını görebiliyordum.