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 - Fatal编程技术网

用较少的耦合表示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>();


}