イテレータのJavaデザインパターン

パブリック インターフェース集合{ 

    // 呼び出しイテレータイテレータインターフェイスはクラスのインスタンスを生成する方法であって実現
    パブリック 抽象イテレータイテレータを(); 
}
パブリック インターフェイスイテレータ{ 

    // 次の要素の次の要素のhasNext方法及び取得方法があるか否かを判断する
     // 次の要素がある場合ので、真のブール型へのhasNextリターンを返し、コレクションの末尾への綾振り即ち存在しない場合、バックfalseに
    パブリック 抽象 ブールのhasNext(); 

    // オブジェクトの戻り型、さらに次の処理要素に反復子を移動意味要素のセットを返しショー。
    // Iteratorインターフェイスが唯一のメソッドの名前を知っているので、エンド・プロセスに次に何をすべきか迷っ暗黙的に、我々はの役割を理解するために、Iteratorインターフェイスを実装するクラス検討する必要があり
    、パブリック 抽象、次のオブジェクトを()
}
パブリック クラスブック{ 

    プライベート 最終的な文字列名; 

    公共ブック{(文字列名)
         この .nameの= ;名前
    } 
// getNameメソッドで取得した本の名前として、ブックの外部名は、クラスのコンストラクタを呼び出すときブックBookクラスを初期化しています予約クラスに渡されたパラメータ

    パブリック文字列のgetName(){
         戻り名; 
    } 
}
//は、処理クラスを設定し、インターフェイス集約iteratorメソッド彼の実装
パブリック クラス本棚に実装集計{
 // ブックフィールドの定義を、彼はブックの配列で、配列のサイズは、インスタンス本棚の生成時に指定されている
 // 理由プライベートフィールドは、ブックに設定されている外部変えないようにすることである
    民間 最終帳[]本を;
     プライベート int型 0 =最終; 

    公共の本棚(int型MAXSIZE){
         これは .books = 新しい新しいブック[MAXSIZE]; 
    } 

    パブリックブックgetBookAt(int型のインデックス) {
         戻り書籍[索引]; 
    } 

    公共 ボイドappendBooke(ブックブック){
         これは .books [最終] = 書籍; 
        最後 ++ ; 
    } 

    公共 INT のgetLength(){
         戻り最後。
    } 

    @Override 
    公共イテレータイテレータ(){
         戻り 新しい BookShelfIterator(この)。
    } 
}
// そのため、役割Iteratorを再生する必要性から、それはインタフェースを実装
パブリック クラスを BookShelfIterator 実装するIterator {
 // 本棚フィールドを横断するようにBookShelfIterator夏示し、インデックスフィールドは、反復子が現在ブック添字を指していることを示し
 // コンストラクタは受信されます例本棚フィールドに格納された本棚には、インデックスを0に初期化される
    プライベート 最終本棚本棚;
     プライベート int型のインデックスを、

    公共BookShelfIterator(本棚本棚){
         この .bookShelf = 本棚;
         この .INDEX = 0 ; 
    } 

    @Override 
// のhasNextイテレータメソッドがインターフェイスで宣言された方法であり、この方法には次の本、長いリターン・トゥーレ、ノーリターン偽はありません決定します。
//そこ次の本を判断して、棚のインデックスのみを決定するために本の中で(bookShelf.getLength()の戻り値)を本の合計数を比較する必要が
    パブリック ブールのhasNext(){
         リターン指数< bookShelf.getLength(); 
    } 

    / * * 
     * 
     * @return 
     * / 
    @Override 
// 次に方法が本(本例)反復子が現在指して返します。そして、次の本へのイテレータをしましょう。第行う可変戻りの簿価を削除し、インデックスは本の背を指しせ
    パブリックオブジェクト次に(){ 
        ブックブック = bookShelf.getBookAt(インデックス); 
        インデックス ++ ;
         返す帳; 
    } 

}
パブリック クラスメイン{ 

    公共 静的 ボイドメイン(文字列[]引数){
 // bookShelf.iterator()、適切な棚のトラバースそれイテレータ例を得た状態であれば、棚上の書籍のようにit.hasNext部()、ですそれは停止しません。it.hasNextプログラムで()図書トラバース 
        本棚本棚= 新しい新しい本棚(4。); 
        bookShelf.appendBooke(新新「80日間世界一周」ブック()); 
        bookShelf.appendBooke(新しい新しいブック(「聖書」)); 
        bookShelf.appendBooke(新しい新しいブック(「シンデレラ」)); 
        bookShelf.appendBooke(新しい新しいブック(「あしながおじさんは、近代的な提供」)); 
        イテレータIT= bookShelf.iterator()。
        一方、(it.hasNext()){ 
            ブックブック = (書籍)it.next(); 
            System.out.println(book.getName())。
        } 
    } 

}

 

 

おすすめ

転載: www.cnblogs.com/gegelaopiaoke/p/11002244.html