Mẫu thiết kế - Mẫu lặp lại
Mẫu lặp lại là mẫu thiết kế được sử dụng rất phổ biến trong môi trường lập trình Java và .Net. Mẫu này được sử dụng để có được một cách để truy cập các phần tử của đối tượng bộ sưu tập theo cách tuần tự mà không cần biết biểu diễn cơ bản của nó.
Mẫu lặp lại thuộc danh mục mẫu hành vi.
Thực hiện
Chúng ta sẽ tạo một giao diện Iterator trình bày lại phương thức điều hướng và một giao diện Container sẽ chạy lại trình vòng lặp. Các lớp cụ thể triển khai giao diện Container sẽ chịu trách nhiệm triển khai giao diện Iterator và sử dụng nó
IteratorPatternDemo , lớp demo của chúng ta sẽ sử dụng NamesRepository , một triển khai lớp cụ thể để in Tên được lưu trữ dưới dạng tập hợp trong NamesRepository .
Bước 1
Tạo giao diện.
Iterator.java
public interface Iterator {
public boolean hasNext();
public Object next();
}
Container.java
public interface Container {
public Iterator getIterator();
}
Bước 2
Tạo lớp cụ thể thực hiện giao diện Container . Lớp này có NameIterator lớp bên trong thực hiện giao diện Iterator .
NameRepository.java
public class NameRepository implements Container {
public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};
@Override
public Iterator getIterator() {
return new NameIterator();
}
private class NameIterator implements Iterator {
int index;
@Override
public boolean hasNext() {
if(index < names.length){
return true;
}
return false;
}
@Override
public Object next() {
if(this.hasNext()){
return names[index++];
}
return null;
}
}
}
Bước 3
Sử dụng NameRepository để lấy tên trình lặp và in.
IteratorPatternDemo.java
public class IteratorPatternDemo {
public static void main(String[] args) {
NameRepository namesRepository = new NameRepository();
for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){
String name = (String)iter.next();
System.out.println("Name : " + name);
}
}
}
Bước 4
Xác minh kết quả đầu ra.
Name : Robert
Name : John
Name : Julie
Name : Lora