对常用的firebase查询使用静态方法是一种好习惯

时间:2018-01-27 09:51:51

标签: java android firebase firebase-realtime-database

背景:我正在制作一个相当大的Android应用程序,它使用firebase作为支持。

问题:我发现自己经常使用相同的firebase逻辑来查询数据,例如在多个不同的屏幕中加载具有特定UID的用户。我想要一种方法从我的UI中抽象出所有的firebase逻辑,并通过一个方法调用加载数据作为参数传递一个完成侦听器。此示例仅用于查询一棵树,但我想像我这样进行所有查询

我发现这种方法非常有用,因为它为我节省了大量代码并帮助我进行调试,但我不确定这是否是最好的方法。这种技术还可以吗?有没有其他技术可以实现相同的功能?

这是我想要放置所有查询的类的示例:

public class FirebaseHelper {



public static void loadPerson(String personUid, final PersonListener oneTimePersonListener){

    ValueEventListener personValueListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Person person = dataSnapshot.getValue(Person.class);
            oneTimePersonListener.onPersonLoaded(person);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }

    };
    DatabaseReference databasePersonRef = FirebaseDatabase.getInstance().getReference().child(DatabaseContract.FIREBASE_PERSON_CHILD_NAME);

    databasePersonRef.child(personUid).addListenerForSingleValueEvent(personValueListener);

    }
}

这是on on completion listener的接口示例:

public interface PersonListener {
   void onPersonLoaded(Person person);
}

这是一个如何使用它的例子:

FirebaseHelper.loadPerson(personUid, new PersonListener() {
        @Override
        public void onPersonLoaded(Person person) {
           //Do stuff with the loaded person
        }
    });

1 个答案:

答案 0 :(得分:0)

帮助您的一切都是一种很好的做法。不要认为有一个完美的练习,因为根本没有。每个tehnique,让你的工作更容易,因为静态方法在你的情况下,是一个很好的选择。创建帮助程序类只有在使用Firebase时才有用,几乎在任何时候都是必需的。所以恕我直言,你正在做的是什么,它是一个很好的技术,可以帮助你节省编写项目的时间,而且我没有看到其他技术比那个特殊情况更好。