何年も勉強した後、私は問題を見つけましたよく食べて、あなたのクラスがよく教えられていると思います。
さて、教師の命名プロセスがどのように実装されているかを見てみましょう。
1。いつものように、最初に教師のインターフェイスクラスを定義しましょう。
コードコピーは次のとおりです。
パブリックインターフェイスティーチャー{
public Iterator createiterator();
}
2。特定の教師(ConcreTeTeacher)クラスは、教師(教師)インターフェイスの実装です。
コードコピーは次のとおりです。
パブリッククラスのconcreteTeacherは教師を実装します{
private object [] present = {"Zhang San is Here"、 "li si is here"、 "wang wu is not here"};
public Iterator createiterator(){
新しいconcreteiterator(this);
}
Public Object getElement(int index){//クラスメートの現在の出席を取得する
if(index <estress.length){
現在[index]を返します。
}
それ以外{
nullを返します。
}
}
public int getsize(){
return grest.length; //クラスの出席セットのサイズを取得します。
}
}
3。Iteratorインターフェイスクラスを定義します。
コードコピーは次のとおりです。
パブリックインターフェイスIterator {
void first();
void next();
boolean isdone();
Object CurrentItem(); //クラスメートの現在の出席
}
4.特定の具体的なクラスは、イテレーターインターフェイスの実装です。
コードコピーは次のとおりです。
パブリッククラスの具体的にはイテレーターを実装しています{
プライベートコンクリートテッター教師。
Private int index = 0;
プライベートINTサイズ= 0;
Public Concreteiterator(ConcreTeteacher Teacher){
this.teacher = teacher;
size = teacher.getSize(); //クラスメートの数を取得します
index = 0;
}
public void first(){// first
index = 0;
}
public void next(){// next
if(index <size){
インデックス++;
}
}
public boolean isdone(){//名前は完成しています
return(index> = size);
}
public Object culernitem(){//クラスメートの現在の出席
return teacher.getElement(index);
}
}
5。テストクラスの書き込み:
コードコピーは次のとおりです。
パブリッククラステスト{
プライベートイテレーター。
プライベート教師= new ConcreTeTeacher();
public void operation(){
it = Teacher.createiterator();
while(!it.isdone()){//クリックが完了していない場合
System.out.println(it.currentitem()。toString());
it.next();
}
}
public static void main(string agrs []){
テストテスト= new Test();
test.operation();
}
}
6。説明:
A:定義:Iteratorパターンは、集計の内部状況を公開せずに、集約された要素に順番にアクセスできます。
B:この例では、教師はIteratorオブジェクトを作成するインターフェイスを提供し、イテレーターは生徒の出席を通過するために必要なインターフェイスを定義します。
C:Iteratorモードの利点は、(ConcreTeTeacher)オブジェクトに変更がある場合、新入生がクラスメートの出席セットに追加されるか、クラスメートが減少するなど、この変更はクライアントに影響を与えないことです。