我一直在测试 Android 中的各种 orm,以便在我目前正在开发的应用程序中进行对象关系映射。
我制作了一个类图,我发现在某些类中实现单例模式很有用。
正如单例模式所述,单例类必须将类的构造函数设为私有,以强制执行该类的唯一实例。
从 ORMlite 帮助页面考虑这一点:
2.1.3 添加无参数构造函数
添加类和字段注释后,您还需要添加一个至少具有包可见性的无参数构造函数。当从查询返回对象时,ORMLite 使用 Java 反射构造对象,并且需要调用构造函数。
如何使用 ORMLite 实现这种模式?我举个例子:
ColectorPrincipal 类代表我的应用程序的用户,因为当时只有 1 人使用该应用程序,我想确保一次只有 1 个此类的实例。
public class ColectorPrincipal extends Persona {
@DatabaseField(index=true)
private String numeroColeccionActual;
private static ColectorPrincipal colectorPrincipal;
@DatabaseField(generatedId=true)
private int colectorPrincipalID;
@DatabaseField(foreign=true)
private ArrayList<Viaje> viajes;
@DatabaseField(foreign=true)
private ArrayList<Proyecto> proyectos;
@DatabaseField
private int tipoCapturaDatos;
/**
*
* @param usuario
* @param contraseña
*/
private ColectorPrincipal(String usuario, String contraseña){
super(usuario, contraseña);
setusuario(new Usuario(usuario, contraseña));
}
/**
*
* @param usuario
* @param contraseña
*/
public static ColectorPrincipal getColectorPrincipal(String usuario, String contraseña){
if (colectorPrincipal == null) {
colectorPrincipal=new ColectorPrincipal(usuario, contraseña);
}
return colectorPrincipal;
}
...
}
这个类有一些暂时的属性,也有一些持久的。
这个类还扩展自另一个名为 Persona 的类,它代表一个人,因此它具有姓名、电话、地址等数据……这个属性是持久的,但 Person 类不是持久的,因为我想将两个类的数据存储在一个单一的桌子。
public class Persona {
@DatabaseField
private String nombres;
@DatabaseField
private String apellidos;
@DatabaseField
private String direccion;
@DatabaseField
private String telefono;
@DatabaseField
private String institucion;
private Usuario usuario;
public Persona(){
}
/**
*
* @param apellidos
* @param nombres
*/
public Persona(String apellidos, String nombres){
}
...
}
是否可以使 ORMLite 实例化类 tru 单例方法getColectorPrincipal?