对于一般的成员变量,对其提供简单的
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();
}
}
|
转载于:https://blog.51cto.com/zhangjunhd/71263