728x90
β» Java μΈμ΄λ‘ λ°°μ°λ λμμΈ ν¨ν΄ μ λ¬Έ(μμ§λ·μ»΄) λμλ₯Ό λ°νμΌλ‘ μμ±λ λ΄μ©μ λλ€.
Iterator(μ΄ν°λ μ΄ν°/λ°λ³΅μ) ν¨ν΄ μκ°
- μ§ν© κ°μ²΄μ λ΄λΆ ꡬ쑰λ₯Ό λ ΈμΆμν€μ§ μκ³ λ°λ³΅νμ¬ μννλ λ°©λ²μ μ 곡ν ν¨ν΄
- μμλλ‘ μ§μ νλ©΄μ μ 체λ₯Ό κ²μνλ μ²λ¦¬
μμ νλ‘κ·Έλ¨ - JAVA
- Aggregate μΈν°νμ΄μ€ (Aggregate.java)
- μ§ν©μ²΄λ₯Ό λνλ΄λ μΈν°ν¨μ΄μ€
public interface Aggregate {
public abstract Iterator iterator();
}
- Iterator μΈν°νμ΄μ€ (Iterator.java)
- μμλ₯Ό μμλλ‘ κ²μν΄κ°λ μΈν°νμ΄μ€
public interface Iterator {
public abstract boolean hasNext();
public abstract Object next();
}
- Book ν΄λμ€ (Book.java)
- 'μ± 'μ λνλ΄λ ν΄λμ€
public class Book {
private String name;
public Book(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
- BookShelf ν΄λμ€ (BookShelf.java)
- ConcreteAggregate(ꡬ체μ μΈ μ§ν©μ²΄)μ μν
- Aggregate μν μ΄ κ²°μ ν μΈν°νμ΄μ€λ₯Ό μ€μ λ‘ κ΅¬ν
- Iterator λ©μλ ꡬνμ ν΅ν΄ ConcreteIterator μν μ μΈμ€ν΄μ€λ₯Ό μμ±νλ μΌ
public class BookShelf implements Aggregate {
private Book[] books;
private int last = 0;
public BookShelf(int maxSize) {
this.books = new Book[maxSize];
}
public Book getBookAt(int index) {
return books[index];
}
public void appendBook(Book book) {
this.books[last++] = book;
}
public int getLength() {
return last;
}
// Iterator λ©μλ ꡬν
public Iterator iterator() {
return new BookShelfIterator(this);
}
}
- BookShelfIterator ν΄λμ€ (BookShelfIterator.java)
- ConcreteIterator(ꡬ체μ μΈ λ°λ³΅μ)μ μν
- Iteratorκ° κ²°μ ν μΈν°νμ΄μ€λ₯Ό μ€μ λ‘ κ΅¬ν
- κ²μμ νμν μ 보 κΈ°μ΅
public class BookShelfIterator implements Iterator {
private BookShelf bookShelf;
private int index;
public BookShelfIterator(BookShelf bookShelf) {
this.bookShelf = bookShelf;
this.index = 0;
}
// Iterator - hasNest λ©μλ ꡬν
public boolean hasNext() {
if (index < bookShelf.getLength()) {
return true;
} else {
return false;
}
}
// Iterator - next λ©μλ ꡬν
public Object next() {
Book book = bookShelf.getBookAt(index);
index++;
return book;
}
}
- Main ν΄λμ€ (Main.java)
public class Main {
public static void main(String[] args) {
BookShelf bookShelf = new BookShelf(4);
bookShelf.appendBook(new Book("80μΌκ°μ μΈκ³μΌμ£Ό"));
bookShelf.appendBook(new Book("μ±μ"));
bookShelf.appendBook(new Book("μ λ°λ λΌ"));
bookShelf.appendBook(new Book("ν€λ€λ¦¬ μμ μ¨"));
Iterator it = bookShelf.iterator();
while (it.hasNext()) {
Book book = it.next();
System.out.println(book.getName());
}
}
}
μ₯μ κ³Ό λ¨μ
μ₯μ
- μννλ λ°©λ²λ§ μλ©΄ λ λΏ μ§ν© κ°μ²΄μ λ΄λΆ ꡬ쑰λ μμ§ λͺ»ν΄λ μν κ°λ₯
- μννλ Iteratorμ μ± μκ³Ό ꡬνλΆμ μλ²½ν λΆλ¦¬
λ¨μ
- λ²κ±°λ‘κ³ λ³΅μ‘ν μ μκΈ° λλ¬Έμ iterator μ¬μ©μ΄ μ μ©ν μ§μ λν νλ¨μ΄ νμ
μ μ© μ¬λ‘
- μμν λ± λ€μν μν λ°©λ²μ΄ νμν κ²½μ°
- μ§ν© κ°μ²΄μ κ΅¬μ‘°κ° λ³κ²½λ κ°λ₯μ±μ΄ μλ κ²½μ°
728x90