用较少的耦合表示java中的多重性
考虑两类团队和球员用较少的耦合表示java中的多重性,java,oop,Java,Oop,考虑两类团队和球员 Class Player { String name; int age; //Getters and Setters } 代表一队球员的最佳方式是什么 (一) 班级团队 { 字符串组名; 字符串城市; 列出参与者名单; //接球手和接球手 } (二) 班级团队 { 字符串组名; 字符串城市; //接球手和接球手 } 班上队员 { 团队; 列出参与者名单; //接球手和接球手 } 第一种形式对我来说似乎更符合逻辑,但后一种形式更具灵活性。 因此,我可以决定哪一种方法,以及
Class Player
{
String name;
int age;
//Getters and Setters
}
代表一队球员的最佳方式是什么
(一)
班级团队
{
字符串组名;
字符串城市;
列出参与者名单;
//接球手和接球手
}
(二)
班级团队
{
字符串组名;
字符串城市;
//接球手和接球手
}
班上队员
{
团队;
列出参与者名单;
//接球手和接球手
}
第一种形式对我来说似乎更符合逻辑,但后一种形式更具灵活性。
因此,我可以决定哪一种方法,以及这两种方法可能的优缺点。我认为在这里使用泛型会很好
public class Team<T>{
List<T> members = new ArrayList<T>();
}
公共类团队{
列表成员=新的ArrayList();
}
这样你就可以组建任何类型的团队
根据你的代码,
我更喜欢第一个选项,因为它有一个关系和多样性。这取决于(当然…)
如果你要实现许多方法,这些方法直接在
列表播放器上执行一些操作
和一些使用团队
类的方法,使用另一个类团队成员
并对团队
类中的团队成员
方法进行包装(如果需要)将更具可读性。使用OOP代码时,我发现最好的方法总是最直观地对问题建模的方法
当你看一个团队
,它肯定有玩家
。一个团队
几乎肯定应该了解其中的球员,并提供修改其名册的功能(即addPlayer()
,removePlayer()
)-第一个选项可以轻松完成
如果您需要
TeamPlayers
类的额外灵活性,您可以让Team
包含它的一个实例,然后将对Player
的任何Team
相关调用的调用委托给TeamPlayers
。我的两分钱。我喜欢第一分钱。它需要更少的一个对象,使表结构更容易(如果有),并更好地显示一对多关系。我认为第二个原因是,如果我需要把元数据和我不一定想要的关系包含在团队中,而不是你的下落者,但是你的方式不会引入更多的依赖性吗?一旦你说你的团队是由一个特定的集合组成的,它就变得不那么可扩展了。如果您希望您的团队由可能不共享父对象的玩家组成,该怎么办?那么,您可以添加这些对象的另一个ArrayList,但是您的ArrayList变得毫无意义,因为,是的,它是由s(在本例中可能是玩家)组成的,但也包括组成团队的任何其他内容。我觉得模板团队是多余的。是的,但是如果我想添加更多的属性,这两个属性都是后者的共同点,那么只需将其添加到团队成员中就很简单了,我们如何才能获得直接持有玩家实例的同一个团队。你能举例说明你的意思吗?我认为我没有正确地理解它。
Class Team
{
String teamName;
String city;
//Getters and Setters
}
Class TeamPlayers
{
Team team;
List<Player> players;
//Getters and Setters
}
public class Team<T>{
List<T> members = new ArrayList<T>();
}