我最近读到了关于单例原则的文章,但是如果构造函数是private的话,我不太清楚如何初始化一个类的单个实例,形成另一个类。如果构造函数应该是private,那么如何从另一个类中设置参数?
public class Player {
String name;
Position p;
Inventory i;
private Player(String name, Position p, Inventory i){
}
static {
instance =
}
public static Player getPlayer(){
return instance;
}
}发布于 2018-05-22 17:30:34
基本上,使用这种方法可以隐藏构造函数(private),并公开获取instance的静态方法。在方法中,检查instance if null,如果是,则使用提供的参数对其进行初始化。
最后,返回instance。
注意到在这里,如果您不止一次调用getPlayer方法,那么实例将被创建(在进一步调用方法getPlayer时将是相同的),在第一次调用静态方法时提供的参数将是相同的。
public class Player {
String name;
Position p;
Inventory i;
private static Player instance;
private Player(String name, Position p, Inventory i){
// ...
}
public static Player getPlayer(String name, Position p, Inventory i){
if (instance == null) {
instance = new Player(name, p, i);
}
return instance;
}
}此外,如果您想正确地使用单例模式,那么在创建实例之后,不应该设置属性(没有setters方法)。
https://stackoverflow.com/questions/50473284
复制相似问题