迭代器模式:提供一種方法用來迭代集合中的數據並不破壞或者暴漏內部的結構
迭代器的使用場景很明顯:就是封裝遍歷
要對數據進行封裝遍歷的方式有兩種:
1)將數據結構返回給調用者進行遍歷
2)引用迭代器模式進行遍歷
迭代器模式的優點:
- 數據安全:將數據結構封裝到了對象內部,外部無法對其進行操作;
- 封裝遍歷:實現了Java提供的迭代器接口(泛型的),將迭代的步驟封裝成hasNext和next兩個函數
本例子應用場景:從用戶信息中讀取該用戶所擁有的菜單權限
定義菜單
@Data
public class Menu implements Serializable {
private String menuName;
private String id;
}
定義用戶BMS菜單
public class User implements Iterator<String> {
private List<Menu> menuLists=new ArrayList<>();
private int index;
@Override
public boolean hasNext() {
return index<menuLists.size();
}
@Override
public String next() {
String name = menuLists.get(index).getMenuName();
index++;
return name;
}
public void setMenuLists(List<Menu> menuLists) {
this.menuLists = menuLists;
}
}
定義用戶APP菜單