對於一般的成員變量,對其提供簡單的getter/setter封裝即可。而對於一個集合類,不能夠這樣做。
對於一個簡單的成員變量,可以這樣:
class Athlete {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// ......
}
而如果是一個Set/List/Map或數組,應該:
[1]初始化這個集合類;
[2]提供對單個元素的add/remove;
[3]提供加入另一個集合的方法。如果是基於此初始化,則先保證當前集合無元素;
[4]對於getter方法,應該返回該集合的只讀試圖;
[5]提供當前集合size。
public class Game {
private Set<Athlete> players = new HashSet<Athlete>();// 1
public void addPlayer(Athlete one) {// 2
players.add(one);
}
public void removePlayer(Athlete one) {// 2
players.remove(one);
}
public void addPlayers(Set<Athlete> set) {// 3
Iterator<Athlete> iter = set.iterator();
while (iter.hasNext())
addPlayer(iter.next());
}
public void initializaPlayers(Set<Athlete> set) {// 3
if (getAttendNumbers() > 0)
players.clear();
players.addAll(set);
}
public Set<Athlete> getAllPlayers() {// 4
return Collections.unmodifiableSet(players);
}
public int getAttendNumbers() {// 5
return players.size();
}
}