Wednesday, October 20, 2010

Iterator. Loại: Behavioral. Độ khó: Thấp

Iterator là một dạng vòng lặp. Đối với 1 danh sách các đối tượng không đồng nhất nhau thì việc đưa vào các danh sách như List, Sort, Map sẽ giúp cho việc duyệt qua danh sách dễ dàng mà không cần quan tâm đến sự hiện diện bên trong của danh sách.

Ví dụ có interface Employee và 2 class hiện thực là HourlyEmployee - nhân viên làm theo giờ và RegularEmployee - nhân viên lãnh lương tháng.

interface Employee {

double earnings();

}

public class HourlyEmployee implements Employee {

private double salaryPerHour;

private String name;

public HourlyEmployee(double salaryPerHour, String name) {
super();
this.salaryPerHour = salaryPerHour;
this.name = name;
}

public double earnings() {
// TODO Auto-generated method stub
return 40*salaryPerHour;
}

public String toString() {
return name;
}
}

public class HourlyEmployee implements Employee {

private double salaryPerHour;

private String name;

public HourlyEmployee(double salaryPerHour, String name) {
super();
this.salaryPerHour = salaryPerHour;
this.name = name;
}


public double earnings() {
return 40*salaryPerHour;
}


public String toString() {
return name;
}

}

Sử dụng pattern này:

public static void main(String[] args)
{
List list = new ArrayList();

list.add(new HourlyEmployee(30, "Petter"));

list.add(new RegularEmployee(20000000, "Mary"));

Iterator itr = list.iterator();

while(itr.hasNext())
{
Employee em = (Employee)itr.next();
System.out.println(em + " earns "+em.earnings());
}

}


No comments:

Post a Comment