对于一般的成员变量,对其提供简单的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 players = new HashSet();// 1 public void addPlayer(Athlete one) {// 2 players.add(one); } public void removePlayer(Athlete one) {// 2 players.remove(one); } public void addPlayers(Set set) {// 3 Iterator iter = set.iterator(); while (iter.hasNext()) addPlayer(iter.next()); } public void initializaPlayers(Set set) {// 3 if (getAttendNumbers() > 0) players.clear(); players.addAll(set); } public Set getAllPlayers() {// 4 return Collections.unmodifiableSet(players); } public int getAttendNumbers() {// 5 return players.size(); }}
多对自己说“我能行,我一定可以”,