Android实现类似Java的工厂设计模式
如何使用java示例代码使用Android和Hilt/Dagger创建工厂方法。这种设计模式在Android Hilt/Dagger中是否可行,以及如何实现。我在网上找不到好的解决办法 谢谢你,约翰Android实现类似Java的工厂设计模式,android,dagger-2,dagger-hilt,Android,Dagger 2,Dagger Hilt,如何使用java示例代码使用Android和Hilt/Dagger创建工厂方法。这种设计模式在Android Hilt/Dagger中是否可行,以及如何实现。我在网上找不到好的解决办法 谢谢你,约翰 public class ScannerFactory { private ScannerFactory() { } /** * Get the scanner device * * @param scannerType - The scan
public class ScannerFactory {
private ScannerFactory() {
}
/**
* Get the scanner device
*
* @param scannerType - The scanner type, one of A or B
* @param context - The apps context
* @return
*/
public static ScannerDevice getScannerDevice(final String scannerType, final Context context) {
if (scannerType.equals("A")) {
return new DeviceA(context);
} else if (scannerType.equals("B")) {
return new DeviceB(context);
}
throw new IllegalArgumentException("Wrong device");
}
}
从javadoc判断,您需要的是
应用程序上下文(而不是活动上下文)。所以你应该这样做:
@Singleton
公营扫描工厂{
私人最终语境;
@注入
公共扫描工厂(@ApplicationContext上下文){
this.context=上下文;
}
/**
*获取扫描设备
*
*@param scannerType-扫描仪类型,A或B之一
*@返回
*/
公共静态扫描设备getScannerDevice(最终字符串扫描类型){
if(扫描类型等于(“A”)){
返回新设备(上下文);
}else if(扫描类型等于(“B”)){
返回新设备B(上下文);
}
抛出新的IllegalArgumentException(“错误设备”);
}
}
然后当你想用它的时候,你就按照。例如:
@AndroidEntryPoint
公共类MainActivity扩展了AppCompatActivity{
@注入
扫描工厂扫描工厂;
//…活动代码的其余部分
}