因此,我首先进入Android开发阶段并希望使用蓝牙API做一些事情。令我困惑的是,在我看到的每个例子中你都不需要创建蓝牙适配器的新实例,你可以像这样调用它。
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
我无法理解为什么没有人做这件事:
BluetoothAdapter mBluetoothAdapter = new BluetoothAdapter();
myBluetoothAdapter = mBluetoothAdapter.getDefaultAdapter();
现在让我非常与我创建新实例的类以及我不创建的对象相混淆。
答案 0 :(得分:1)
BluetoothAdapter类可能是Singleton类,因此您可以通过调用静态方法getDefaultAdapter()来获取实例,该方法会为您返回一个实例。
并且您无法实例化静态类。
答案 1 :(得分:0)
如果要从工厂获取对象,为什么要初始化对象?你实际上是在创建两个对象然后扔掉第一个对象。因此,如果您的类具有工厂方法,则跳过对象初始化行。 是的,了解课程是否有工厂方法的唯一方法是查看文档并随时学习。
答案 2 :(得分:0)
这是一种单身设计模式。当您只想要该类的一个实例时,可以使用此模式。您不需要BluetoothAdapter的多个实例。当您必须在实例之间共享资源时,通常需要使用单例,例如,您可能希望在多个对象上使用类。如何在java中完成这是通过静态字段,如下所示:
class BluetoothAdapter{
private static adapter = null;
private BluetoothAdapter(){
}
public static getDefaultAdapter(){
if (adapter == null){
adapter = new BluetoothAdapter();
}
return adapter;
}
}
首先,这允许您当时只有一个此对象的实例。此外,它只在您真正需要时才创建对象。如果您从不调用getDefaultAdapter(),则永远不会创建适配器。