Как заменить шаблон наблюдателя на Rxjava или другим способом? - PullRequest
0 голосов
/ 05 января 2019

Я разработчик Android и новичок в RxJava2. Теперь у меня есть некоторая путаница относительно модели наблюдателя в нашем проекте;

Наш проект разделен на несколько слоев, таких как Вид и Модель. Например, у нас есть UserModel и Listener в нем, затем UserList в качестве представления хочет получить сообщение от UserModel, теперь мы должны реализовать UserModel.Listener и addListener или removeListener для UserModel в нужное время;

На самом деле, похоже, в этом нет ничего плохого. В нашем проекте много таких кодов, но я думаю, что это немного скучно. Так могут ли некоторые ребята помочь мне дать лучший способ не писать такой повторяющийся код?

Я пытаюсь использовать RxJava, заменить его, я могу использовать список Observable как доступ к верхнему уровню и View подписать список; Но в действительности возможно, что мы заботимся только о событиях, подобных onHostChanged (int from, int to, int reason), и отображение событий в сущности не является простым, и это имеет большое значение для существующего кода; Другой способ - упаковать все сообщения как событие и предоставить Observable, но с параметрами трудно работать; Так что у вас есть хороший способ 100

public class UserModel{
    public interface Listener{
        void onUserAdd(int id);
        void onUserRemove(int id);
        void onHostChanged(int from, int to,int reason);
        ......
    }

    private List<UserModel.Listener> listeners;

    public void addListener(UserModel.Listener listener)

    public void removeListener(UserModel.Listener listener)

    private void something(){
        for(UserModel.Listener listener : listeners){
            listeners.onHostChanged(a,b,c);
        }
    }
}


public class UserList implements UserModel.Listener{
    @Override
    public void onHostChanged(int from,int to,int reason);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...