1.给顶一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
2。适用性:
a).访问一个聚合对象的内容而无须暴露它的内部表示。
b)支持对聚合对象的多种遍历.
c)为遍历不同的聚合结构提供一个统一的接口。
3。参与者:
a)Iteartor迭代器定义访问和遍历元素的接口。
b)ConcreateIterator具体迭代器,对该聚合遍历时跟踪当前位置。
c)Aggregate聚合定义创建相应迭代器对象的接口。
d).concreateAgregate具体聚合实现相应的接口,该操作返回ConcreateIterator的一个适当的实例。
4.代码如下:
package test;
public class Book {
private String name;
private String ISBN;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getISBN() {
return ISBN;
}
public void setISBN(String isbn) {
ISBN = isbn;
}
public void disPlay(){
System.out.println("Book name: "+name+", ISBN: "+ISBN);
}
}
package test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class BookList {
private List<Book> bookList = new ArrayList<Book>();
public List<Book> getBookList() {
return bookList;
}
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
}
public void addBook(Book book){
bookList.add(book);
}
public void removeBook(Book book){
bookList.remove(book);
}
@SuppressWarnings("unchecked")
public Iterator<Book> iterator(){
return new Itr<Book>(bookList);
}
}
package test;
import java.util.Iterator;
import java.util.List;
@SuppressWarnings("unchecked")
public class Itr<T> implements Iterator {
private List<T> lists;
private int index;
public Itr(List<T> list) {
this.lists = list;
}
public boolean hasNext() {
if(lists == null ||index >= lists.size()){
return false;
}
return true;
}
public Object next() {
return lists.get(index++);
}
public void remove() {
// TODO Auto-generated method stub
}
}
package test;
import java.util.Iterator;
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Book book1 = new Book();
book1.setName("语文");
book1.setISBN("111222-3333-YW");
Book book2 = new Book();
book2.setName("数学");
book2.setISBN("3333-444-SX");
BookList bookList = new BookList();
bookList.addBook(book1);
bookList.addBook(book2);
Iterator<Book> iterator = bookList.iterator();
while(iterator.hasNext()){
Book b = iterator.next();
b.disPlay();
}
}
}