对于一般的成员变量,对其提供简单的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();
- }
- }
复制代码 |
|