По сути, при таком подходе вы скрываете конструктор (private
) и выставляете статический метод для получения instance
.В методе, который вы проверяете, если instance
если 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;
}
}
Кроме того, если вы хотите правильно использовать шаблон синглтона, вы не должны устанавливать атрибуты (без методов установки) после создания экземпляра.