2014년 2월 11일 화요일

Adapter + Iterator



public class BookDTO {
private String name;
public BookDTO(String $name){
name = $name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}




import java.util.ArrayList;

public class Books {

private ArrayList<BookDTO> books = new ArrayList<BookDTO>();
public Books(){}
public void addBook(BookDTO book){
for(int i=0, l=books.size(); i<l; ++i){
if(books.get(i).equals(book)){
return;
}
}
books.add(book);
}
public void removeBook(BookDTO book){
for(int i=0, l=books.size(); i<l; ++i){
if(books.get(i).equals(book)){
books.remove(book);
break;
}
}
}
public int getLength(){
return books.size();
}
public BookDTO getAt(int index){
if(index > books.size() - 1) return null;
return books.get(index);
}

}





public class BookManager {
private static BookManager instance = null;
private Books books = new Books();
private BookManager(){}
public static BookManager sharedObject(){
if(instance == null){
instance = new BookManager();
}
return instance;
}
public Books getBooks(){
return books;
}
public Iterator iterator(){
//return new BookIterator(books);
return new NewIterator(books);
}

}





public interface Iterator {
public boolean hasNext();
public Object next();

}




public class BookIterator implements Iterator{
protected Books books;
protected int index;
public BookIterator(Books $books){
books = $books;
}
@Override
public boolean hasNext() {
return (index < books.getLength());
}

@Override
public Object next() {
BookDTO dto = books.getAt(index++);
return dto;
}
}



public interface Adapter {
public boolean adaptedHasNext();
public BookDTO adaptedNext();

}



public class NewIterator extends BookIterator implements Adapter{

public NewIterator(Books $books) {
super($books);
}

@Override
public boolean adaptedHasNext() {
return hasNext();
}

@Override
public BookDTO adaptedNext() {
return (BookDTO) next();
}

}




public class Tester {
public static void main(String args[]){
BookManager manager = BookManager.sharedObject();
manager.getBooks().addBook(new BookDTO("Extended Phonotype"));
manager.getBooks().addBook(new BookDTO("Why Evolution Is True"));
manager.getBooks().addBook(new BookDTO("The Magic Of Reality"));
NewIterator iterator = (NewIterator) manager.iterator();
while(iterator.adaptedHasNext()){
BookDTO book = iterator.adaptedNext();
System.out.println(book.getName());
}
}

}










댓글 없음:

댓글 쓰기