不多说了,直接贴代码
interface Iproduct { public void Add(String Name); public String GetProductInfo(); public IproductIterator iterator(); } interface IproductIterator extends Iterator { } class productIterator implements IproductIterator { private ArrayList<Iproduct> productList = new ArrayList<Iproduct>(); private int currentItem = 0; public boolean hasNext() { boolean b = true; if(currentItem >= productList.size() ||productList.get(currentItem) == null ) { b = false; } return b; } public void remove() { } public productIterator(ArrayList<Iproduct> list) { productList = list; } public Iproduct next() { return (Iproduct)this.productList.get(this.currentItem++); } } class Product implements Iproduct { private ArrayList<Iproduct> projectList = new ArrayList<Iproduct>(); private String _name = ""; private Product(String name) { _name = name; } public Product() {} public void Add(String name) { this.projectList.add(new Product(name) ); } public String GetProductInfo() { String info = ""; return "产品名称是:"+_name; } public IproductIterator iterator() { return new productIterator(projectList); } } class design_Pattern_Iterator_Pattern_Client { public void design_Pattern_Iterator_Pattern_Client_Test() { Iproduct pro = new Product(); pro.Add("pro1"); pro.Add("pro2"); pro.Add("pro3"); pro.Add("pro4"); for (int i=0;i<100 ;i++ ) { pro.Add("Product"+i); } IproductIterator iter = pro.iterator(); while (iter.hasNext()) { Iproduct p = (Product)iter.next(); System.out.println(p.GetProductInfo()); } } }