Sobes.tech
Middle+

Presenterdə baxışın saxlanmasının mənfi cəhətləri nədir?

sobes.tech Süni İntellekt

AI-dan cavab

MVP nümunəsində (Presenter) görünüşə (View) istinadın saxlanılması aşağıdakı çatışmazlıqlara səbəb ola bilər:

  1. Yaddaş sızması: Əgər görünüşün həyat dövrü presenterdən qısa olsa və presenter bağlanmış görünüşə istinad etməyə davam etsə, bu yaddaş sızmasına səbəb olur.
  2. Güclü əlaqə: Presenter, konkret bir görünüş tətbiqi ilə sıx əlaqəli olur, bu da birlik testlərini çətinləşdirir və onu müxtəlif görünüşlərlə (məsələn, fragmentlər və fəaliyyətlər) yenidən istifadə etməyi çətinləşdirir. "Separation of Concerns" prinsipinə ziddir.
  3. Test çətinlikləri: Presenter-i test etmək üçün, bütün görünüş interfeysinin mock və ya saxta tətbiqlərini yaratmaq lazımdır, bu isə çətin və aydın deyil.
  4. Asinxron əməliyyatlarla çətinliklər: Asinxron əməliyyatın (məsələn, şəbəkə sorğusu) tamamlanmasından sonra görünüşlə işləmək üçün əlavə yoxlamalar tələb olunur (görünüş hələ qoşulub, yoxsa silinib), bu isə kodu mürəkkəbləşdirir.

Yaxşı praktika, zəif istinadlar (WeakReference) istifadə etmək və ya silinmə zamanı görünüşü presenter-dən ayırmaqdır (məsələn, onDestroyView və ya onDestroy daxilində).

// Zəif istinad nümunəsi
private WeakReference<ViewInterface> viewReference;

public void attachView(ViewInterface view) {
    viewReference = new WeakReference<>(view);
}

public void detachView() {
    if (viewReference != null) {
        viewReference.clear();
        viewReference = null;
    }
}

// Presenter metodlarında:
private ViewInterface getView() {
    return viewReference != null ? viewReference.get() : null;
}

public void updateData(String data) {
    ViewInterface view = getView();
    if (view != null) {
        view.showData(data);
    }
}