Android 개발 디자인 모델 1 편: 교체 기 모드

5786 단어
Iterator Pattern 교체 기 모드 장면 에 서 는 코드 를 자주 작성 하면 한 배열 을 옮 겨 다 니 며 for 순환 을 사용 하여 배열 아래 표 시 를 받 은 후에 더 많은 작업 을 할 것 이 라 고 추측 합 니 다.예 를 들 어 다음 코드: 
 int[] array=new int[5];
        for(int i=0;i<array.length;i++){
            System.out.println(""+i);
        }

또는: 
  int[] array=new int[5];
        for(int i:array){
            System.out.println(""+i);
        }

 물론 i 를 아래 표 시 를 옮 기 는 방식 으로 배열 요 소 를 옮 겨 다 니 는 방법 도 더 있 습 니 다.디자인 모드 를 사용 하여 작성 할 때 i 의 행 위 를 교체 기 로 추상 화 할 수 있 습 니 다. 이런 모델 을 우 리 는 교체 기 모드 라 고 부 릅 니 다.교체 기 모드 는 하나의 집합체 로 사용 할 수 있다.자바 도 하나의 도구 클래스 를 제공 합 니 다: 자바 util. Iterator < E > 와 유사 합 니 다.  장면 수요 책장 에는 5 권 의 기술 서적 이 있 는데 책 이름 을 일률적으로 옮 겨 다 니 라 고 요구 하면 Andriod 의 EditText 에 표 시 됩 니 다.위의 수 요 를 예 로 들 면 구체 적 인 수 요 를 아래 의 설명도 까지 구체 적 으로 할 수 있다.
    Aggregate 인터페이스 Aggregate 인 터 페 이 스 는 점점 증가 하 는 '집합' 이다.이 인 터 페 이 스 를 실현 하 는 클래스 는 배열, 집합 과 유사 한 '집합' 으로 변 한다.기 중합 을 나타 내 는 인터페이스.Iterator 인터페이스 Iterator 인터페이스 실행 요소 가 증가 하여 순환 변수 와 유사 한 기능 을 가지 고 있 습 니 다.실행 증가, 옮 겨 다 니 는 인 터 페 이 스 를 표시 합 니 다.북 클래스 북 은 책 을 나타 내 는데 주로 책의 상세 함 을 얻 기 위 한 것 이다.Bookshellf 류 Bookshellf 는 책장 을 표시 합 니 다. 이 는 Aggregate 인 터 페 이 스 를 실현 하여 취 합 처리 합 니 다.BookshellfIterator 류 BookshellfIterator 는 책장 을 스 캔 하 는 클래스 를 표시 하여 Iterator 의 인터페이스 기능 을 실현 합 니 다. -----------------------------------------Iterator Patterns Activity 류 Iterator Patterns Activity 는 Android 의 메 인 인터페이스 로 위 에서 작 성 된 코드 를 표시 하고 테스트 하 는 데 사 용 됩 니 다.
/**
 *     Iterator  ,              Iterator
 *     、             ,  iterator        
 *   Iterator          。
 * @author terry
 *
 */
public interface Aggregate {
    public abstract Iterator iterator();
}

 Iterator 인터페이스 
public interface Iterator {
    public abstract boolean hasNext();    //       true                
    public abstract Object next();        //       
}

 next 방법 은 취 합 된 요 소 를 되 돌려 주 는 것 입 니 다.그러나 next 방법의 기능 은 이 뿐만 이 아니다.사실 다음 next 방법 을 호출 할 때 다음 요 소 를 되 돌 릴 수 있 도록 내부 상태 에서 다음 단계 로 조용히 들 어가 야 합 니 다.한편, Iterator 는 두 가지 방법 만 묘 사 했 는데 이 두 가지 방법 이 어떻게 실현 되 는 지 는 Bookshellf Iterator 내부 의 실현 에 달 려 있다. 도서 류 
/** 
 *         
 * @author terry 
 *
 */
public class Book {

    private String name=""; 
       
    public Book(String name){        
        this.name=name;    
    }        
    
    public String getName(){        
        return this.name;    
    }
    
}

 Bookshellf 클래스 
/** 
 *          
 *    Aggreagate                。 
 * @author terry 
 * 
 */
 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 BookShelf appendBook(Book book){         
        this.books[last]=book;        
        last++;        
        return this;    
    }    
    
    public int getLength(){        
        return this.last;    
    }
                    
    @Override    
    public Iterator iterator() {        
        // TODO Auto-generated method stub        
        return new BookShelfIterator(this);    
    }
}

Bookshellf 는 Aggregate 인 터 페 이 스 를 실 현 했 습 니 다. 이 방법 은 Bookshellf Iterator 류 의 대상 인 스 턴 스 를 생 성하 고 되 돌려 줍 니 다. 즉, 책장 을 스 캔 할 때 얻 은 '집합' 을 되 돌려 주 라 는 명령 을 보 냅 니 다. BookshellfIterator 클래스  
1 /**
 2  *         “  ” 
 3  * @author Administrator
 4  *
 5  */
 6 public class BookShelfIterator implements Iterator {
 7 
 8     private BookShelf bookShelf;
 9     private int index;
10     
11     public BookShelfIterator(BookShelf bookShelf){
12         this.bookShelf=bookShelf;
13         this.index=0;
14     }
15     
16     
17     @Override
18     public boolean hasNext() {
19         // TODO Auto-generated method stub
20         if(index<bookShelf.getLength()){
21             return true;
22         }else{
23             
24             return false;
25         }
26         
27     }
28 
29     @Override
30     public Object next() {
31         // TODO Auto-generated method stub
32         Book book=bookShelf.getBookAt(index);
33         index++;
34         
35         return book;
36     }
37 
38 }

 위의 일련의 코드 를 작성 한 후에 우 리 는 안 드 로 이 드 의 메 인 인터페이스 에서 위의 Iterator 를 사용 하여 위 에서 제시 한 요 구 를 옮 겨 다 닐 수 있 습 니 다. Iterator Patterns Activity 클래스 
public class IteratorPatternsActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        
        EditText et=(EditText)findViewById(R.id.EditText01);
        
        
        BookShelf bookShelf=new BookShelf(5);
        
        bookShelf.appendBook(new Book("android developer"))
        .appendBook(new Book("Windows Phone 7 developer"))
        .appendBook(new Book("
IOS
 developer"))
        .appendBook(new Book("BADA developer"))
        .appendBook(new Book("Lion developer"));
        
        
        Iterator iterator=bookShelf.iterator();
        while(iterator.hasNext()){
            Book book=(Book)iterator.next();
            et.setText(et.getText()+" "+book.getName());
        }
            
    }
}

 위 에서 실 행 된 결과:
더 많은 기능 확장 위 에 두 가지 기능 만 설명 되 어 있 습 니 다. hasNext () 와 Next () 방법 입 니 다. 이 기초 위 에서 확장 하려 면 얼마나 편리 한 지 생각해 보 세 요. 예 를 들 어 뒤쪽 에서 앞으로 의 역방향 으로 이동 한 후, 뒤쪽 에서 앞으로 의 양 방향 으로 이동 (Next, Previous...) 아래 표 시 를 지정 하면 바로 얻 을 수 있 습 니 다.

좋은 웹페이지 즐겨찾기