如何用Rxjava或其他方式替换观察者模式?

时间:2019-01-05 07:45:55

标签: java android architecture rx-java observer-pattern

我是Android开发人员,并且是RxJava2的新手。现在我对我们项目中的观察者模式有些困惑;

我们的项目分为几层,例如视图和模型 例如,我们有一个UserModel和一个Listener,然后将UserList作为一个View要从UserModel接收消息,现在我们必须在适当的时候实现UserModel.Listener和addListener或removeListener到UserModel;

实际上,这似乎没有错。我们的项目中有许多这样的代码,但我认为这有点无聊。因此,有些人能帮我给我一种更好的方式来不编写这样的重复代码吗?

我尝试使用RxJava替换它,我可以使用Observable列表作为上层的暴露,而View可以订阅列表;但是实际上,我们可能只关心事件,就像onHostChanged(int from,int to,int reason)一样,并且将事件映射到实体并不是一件容易的事,这对现有代码有很大的影响。另一种方法是将所有消息打包为一个事件,并公开Observable,但是这些参数很难处理。那你有什么好方法吗?

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);
}

0 个答案:

没有答案