在RxAndroidBle示例应用程序中,Application类是:
public class SampleApplication extends Application
private RxBleClient rxBleClient;
/**
* In practise you will use some kind of dependency injection pattern.
*/
public static RxBleClient getRxBleClient(Context context) {
SampleApplication application = (SampleApplication) context.getApplicationContext();
return application.rxBleClient;
}
@Override
public void onCreate() {
super.onCreate();
rxBleClient = RxBleClient.create(this);
RxBleClient.setLogLevel(RxBleLog.DEBUG);
}
}
由于我们保证只有Application
的一个实例,并且我们只需要RxBleClient
的一个实例,因此编写起来更简单:
public class SampleApplication extends Application {
private static RxBleClient rxBleClient;
public static RxBleClient getRxBleClient() {
return rxBleClient;
}
@Override
public void onCreate() {
super.onCreate();
rxBleClient = RxBleClient.create(this);
RxBleClient.setLogLevel(RxBleLog.DEBUG);
}
}
更复杂的方法有什么好处? 什么是"某种依赖注入模式"?我们能看到一个例子吗?再次,有什么好处?
答案 0 :(得分:1)
正如Marcos Vasconcelos所说,第一种方法可能稍微容易测试,尽管它不是一个好的设计。
Dependency injection是一种获取可测试代码的方法,可以通过(例如)在构造时提供(模拟)依赖项来进行彻底测试。
要查看依赖注入的示例,您可以转到sources of RxAndroidBle
并查看类的设计方式。
一个例子可能是RxBleConnectionImpl
class,它有很多依赖注入。由于可以为它创建extensive test suite。
RxAndroidBle
示例应用程序是作为易于理解的示例编写的。它不一定遵循最佳模式,因为这些并不总是容易遵循。该示例的主要目标是显示库API的用法。