5

Team と Players の 2 つのクラスを考えてみましょう。

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し、(必要に応じて)クラスTeamPlayers内のメソッドにいくつかのラッパーを実行する方が読みやすくなりますTeam

于 2013-09-13T12:53:29.323 に答える
1

OOP コードを扱うとき、問題を最も直感的にモデル化するアプローチが常に最良のアプローチであることがわかります。

を見ると、Team間違いなく がありPlayersます。ATeamは、ほぼ確実にその中のプレーヤーを認識し、名簿を変更する機能 (つまりaddPlayer()removePlayer()) を提供する必要があります。最初のオプションを使用すると、これを簡単に実行できます。

TeamPlayersクラスのさらなる柔軟性が必要な場合は、 にそのインスタンスを含めてから、関連Teamするすべての呼び出しへの呼び出しをに委譲することができます。私の2セント。PlayerTeamTeamPlayers

于 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 に答える