イテレータパターンのJAVAベースのデザインパターン

  • 入門

    反復モードと関係なく、集約オブジェクトの内部表現の、コンテンツオブジェクトにおける逐次重合によってアクセス。ように削除()または削除()と;すなわち、当事者のすべての内容は、オブジェクトを介してインターフェースを介して、関係なく、基本的な実装の、リンクされたリスト又はアレイです。

    コンテナの役割:標準インタフェースの定義は、リストは、設定してください。

    詳細コンテナの役割:特定の基礎となる実装、LinkedListのリスト特定の実装、ArrayListの配列の実装。#サンプルのアレイを実装するためのコード、および組み込みの要素カスタムオブジェクトであるため、一般的な反射は、実装の基礎となります

    イテレータの役割:次の()、のhasNext()

    特定のイテレータの役割

  • クラス図

  

  • コード

 

パブリック インターフェイスイテレータ<T> {
     パブリックT次に()。
    パブリック ブールのhasNext(); 
} 

パブリック クラス ConcreteIterator <T>を実装するイテレータ<T> {
     プライベート集合<T> リストを、
    プライベート int型のインデックス。
    公共 ConcreteIterator(集合<T> のリスト){
         この .LIST = リスト。
        インデックス = 0 ; 
    } 
    パブリックT次に(){
         戻り list.get(インデックス++ )。
    } 

    パブリック ブールのhasNext(){
         場合(インデックス> = はlist.size()){
             戻り 
        } {
             戻り 
        } 
    } 
} 

パブリック インターフェイス集約<T> {
     公共 ボイド追加(Tオブジェクト);
    公共 Tの取得(int型のインデックス);
    公共イテレータ<T> イテレータ();
    公共 int型のサイズ(); 
} 

インポートjava.lang.reflect.Array。

パブリック クラスConcreteAggregate <T> 実装集合<T> {
     プライベートT []リスト。
    プライベート int型のサイズ= 0 ;
    プライベート int型のインデックス= 0 ;
    公共 ConcreteAggregate(クラス<T>型、int型のサイズ){ 
        リスト = (T [])Array.newInstance(タイプ、サイズ)。
    } 
    公共 ボイド追加(Tオブジェクト){ 
        リスト[インデックス ++] = オブジェクト。
        サイズ ++ ; 
    } 

    パブリック T GET(int型のインデックス){
         リターンリスト[インデックス]。
    }

    公共イテレータ<T> 反復子(){
         戻り 新しい ConcreteIterator <T>(この)。
    } 

    公共 int型のサイズ(){
         戻りサイズ; 
    } 
} 

パブリック クラスメイン{
     公共 静的 ボイドメイン(文字列[]引数){ 
        集合の<item>テレビ=
                 新しい ConcreteAggregateの<item>(項目。クラス、10 )。
        television.add(新しい項目( "CCTV1" )); 
        television.add(新しい項目( "天津卫视" )); 
        television.add(新しい項目( "金鹰卡通" )); 
        television.add(新しい項目( "卡酷动画" )); 
        反復子の<item>イテレータ= television.iterator()。
        一方、(iterator.hasNext()){ 
            商品アイテム = iterator.Next()。
            System.out.println(item.getName())。
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/hbsdljz/p/11128759.html