不多說了,直接貼代碼
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());
}
}
}