Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理多个Java对象的最佳方法_Java_Oop_Object - Fatal编程技术网

处理多个Java对象的最佳方法

处理多个Java对象的最佳方法,java,oop,object,Java,Oop,Object,关于Java中处理多个对象的最佳方法,我还没有找到一个很好的答案。我在StackOverflow上看到了几个问题,但我对他们的答案不满意 假设我有一个播放器类: public class Player { private String nickname; private long maxHealth; private long health; public Player(String nickname, long maxHealth, long health)

关于Java中处理多个对象的最佳方法,我还没有找到一个很好的答案。我在StackOverflow上看到了几个问题,但我对他们的答案不满意

假设我有一个
播放器
类:

public class Player
{
    private String nickname;
    private long maxHealth;
    private long health;

    public Player(String nickname, long maxHealth, long health)
    {
        this.nickname = nickname;
        this.maxHealth = maxHealth;
        this.health = health;
    }

    public String getNickname()
    {
        return nickname;
    }

    public void setNickname(String nickname)
    {
        this.nickname = nickname;
    }

    public long getMaxHealth()
    {
        return maxHealth;
    }

    public void setMaxHealth(long maxHealth)
    {
        this.maxHealth = maxHealth;
    }

    public long getHealth()
    {
        return health;
    }

    public void setHealth(long health)
    {
        this.health = health;
    }
}
假设我有一个游戏,一个游戏中有多个玩家,这取决于在线用户的数量。这将是必要的存储在某个地方的所有球员,我们希望像健康的信息被保存和检索以后,改变和保存。根据我目前的知识,我将创建这样的东西来完成这项工作:

public class PlayerManager
{
    private static final PlayerManager SINGLETON = new PlayerManager();
    private final Set<Player> players;

    private PlayerManager() {
        this.players = new HashSet<>();
    }

    public static PlayerManager getSingleton()
    {
        return SINGLETON;
    }

    public void addPlayer(Player p)
    {
        players.add(p);
    }

    public void removePlayer(Player p)
    {
        players.remove(p);
    }

    public boolean exists(String nickname)
    {
        return players.stream().filter(p ->  p.getNickname().equalsIgnoreCase(nickname)).count() == 1;
    }

    ... getPlayer(String nickname), ... 
}
公共类PlayerManager
{
private static final playermanger SINGLETON=new playermanger();
私人决赛选手;
私人玩家管理员(){
this.players=new HashSet();
}
公共静态PlayerManager getSingleton()
{
返回单身;
}
公共无效添加玩家(玩家p)
{
玩家。添加(p);
}
公共无效移除玩家(玩家p)
{
玩家。移除(p);
}
存在公共布尔值(字符串昵称)
{
return players.stream().filter(p->p.get昵称().equalsIgnoreCase(昵称)).count()=1;
}
…getPlayer(字符串昵称)。。。
}

我的整个项目将能够使用
PlayerManager
singleton来添加、删除和检索播放器。这是可行的,但我觉得这不是最好的方法。存储和检索对象的最佳方式是什么

我投票结束这个问题,因为它是关于工作代码的,应该问一下这是一个很好的方法,但是你应该使用一个,我理解如果我有多个线程访问对象的话,使用它的必要性。但是你真的认为我的方法是一个很好的练习吗?如果你有一个游戏类,为什么不把玩家放在那里呢?这难道不是迈向上帝类的一步吗?