728x90
출처 : 책 - java 언어로 배우는 디자인 패턴 입문
1. 사용 이유
(1) 목적
> 전체를 순서대로 처리하는 패턴
(2) 특징
- for문의 변수 i의 기능을 추상화해서 일반화 한 것이다.
- 구현과 접근을 분리한다.
(3) 내 생각
- '사물'과 '사물을 세는 행동'을 분리하는 데 의의가 있는 것 같다. 객체 지향적인 프로그래밍.
- 또한 for문으로 쓰는 것보다 구현 후 사용 할 때는 더 직관적이고 간단한것 같다.
2. 핵심 인터페이스
public interface Aggregate {
public abstract Iterator iterator();
}
public interface Iterator {
public abstract boolean hasNext();
public abstract Object next();
}
3. 예제
(1) Book
public class Book {
private String name;
public Book(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
(2) BookShelf
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;
last++;
}
public int getLength() {
return last;
}
public Iterator iterator() {
return new BookShelfIterator(this);
}
}
(3) BookShelfIterator
public class BookShelfIterator implements Iterator {
private BookShelf bookShelf;
private int index;
public BookShelfIterator(BookShelf bookShelf) {
this.bookShelf = bookShelf;
this.index = 0;
}
public boolean hasNext() {
if (index < bookShelf.getLength()) {
return true;
} else {
return false;
}
}
public Object next() {
Book book = bookShelf.getBookAt(index);
index++;
return book;
}
}
(4) Main
import java.util.*;
public class Main {
public static void main(String[] args) {
BookShelf bookShelf = new BookShelf(4);
bookShelf.appendBook(new Book("Around the World in 80 Days"));
bookShelf.appendBook(new Book("Bible"));
bookShelf.appendBook(new Book("Cinderella"));
bookShelf.appendBook(new Book("Daddy-Long-Legs"));
Iterator it = bookShelf.iterator();
while (it.hasNext()) {
Book book = (Book)it.next();
System.out.println(book.getName());
}
}
}
728x90
'개발 > 디자인 패턴' 카테고리의 다른 글
[Java 언어로 배우는 디자인 패턴 입문] 인스턴스 만들기 6. Prototype (0) | 2021.01.08 |
---|---|
[Java 언어로 배우는 디자인 패턴 입문] 인스턴스 만들기 5. Singleton (0) | 2021.01.07 |
[Java 언어로 배우는 디자인 패턴 입문] 하위 클래스 위임 4. Factory Method (0) | 2021.01.07 |
[Java 언어로 배우는 디자인 패턴 입문] 하위 클래스 위임 3. Template Method (0) | 2021.01.07 |
[Java 언어로 배우는 디자인 패턴 입문] 입문 2. Adapter- 재이용 (0) | 2021.01.04 |
댓글