5

考虑两个类 Team 和 Players。

Class Player
{
String name;
int age;
//Getters and Setters
}

代表球员团队的最佳方式是什么。

1)

 Class Team
    {
    String teamName;
    String city;
    List<Player> players;
    //Getters and Setters 
    }

2)

Class Team
        {
        String teamName;
        String city;
        //Getters and Setters 
        }



Class TeamPlayers
{
Team team;
List<Player> players;
//Getters and Setters  
}

第一种形式对我来说似乎更合乎逻辑,但后一种形式更灵活。所以我可以决定哪一个以及这两种方法的可能优缺点。

4

3 回答 3

4

这取决于(当然......)!

如果你要实现很多直接对类执行某些操作的方法List<Player> players; 一些对Team类执行某些操作的方法,那么使用另一个类并对类内的方法TeamPlayers进行一些包装(如果需要)将更具可读性。TeamPlayersTeam

于 2013-09-13T12:53:29.323 回答
1

在使用 OOP 代码时,我发现最好的方法始终是最直观地模拟问题的方法。

当你看一个时Team,它肯定有Players。ATeam几乎可以肯定知道其中的球员,并提供修改其花名册的功能(即addPlayer()removePlayer())——第一个选项可以让这很容易完成。

如果您需要TeamPlayers该类的额外灵活性,您可以Team包含它的一个实例,然后将对任何Player相关调用的调用Team委托给TeamPlayers. 我的两分钱。

于 2013-09-13T13:19:01.620 回答
0

我认为在这里使用泛型会很好

public class Team<T>{

List<T> members = new ArrayList<T>();


}

这样你就可以组建任何类型的团队。

从您的代码中,我更喜欢第一个选项,因为它的HAS-A关系和多重性。

于 2013-09-13T12:52:19.613 回答