イテレータパターンは、使用されていないと使用することはありません。MyBatisのフレームワークは、反復モードを使用するために発生し、それがシンプルに表示され、必要に応じて将来の仕事で、我々はドライルーチンにそれを模倣することができます。
直接コードに
インポートするjava.util.Iterator; / ** * @author クリントン開始 * / パブリック クラス PropertyTokenizerを 実装するIterator <PropertyTokenizer> { プライベート;文字列名 プライベート 最終文字列IndexedName; プライベート文字列のインデックス。 このプロパティを介して//子供;民間最終文字列の子どもたち2回の反復の前後関係を確立する 公共PropertyTokenizer(文字列フルネーム){ int型( '' DELIM = fullname.indexOfを); IF(DELIM> -1 ){ 名前 =(0 fullname.substring 、DELIM)を、 子どもたち = fullname.substring(DELIM + 1 ); }他{ 名前=フルネーム。 子どもたち = NULL ; } indexedName=名。 DELIM= name.indexOf( '[' )。 もし(DELIM> -1){ インデックス= name.substring(DELIM + 1、name.length() - 1)。 名前=(0 name.substring、DELIM)。 } } パブリック文字列のgetName(){ 戻り名。 } パブリック文字列getIndex(){ リターン・インデックス。 } パブリック文字列getIndexedName(){ 戻りindexedName。 } パブリック文字列GetChildrenメソッド(){ 戻り子供。 } @Override パブリックブールのhasNext(){ リターン子供= nullを!; } @Override 次パブリックPropertyTokenizer(){ リターン新しいPropertyTokenizer(子供)。 } @Override 公共 のボイドのremove(){ スロー 新しい UnsupportedOperationExceptionが(「それはプロパティのコンテキストでは意味を持たないよう削除は、サポートされていません。」); } }
Iteratorインターフェイスは、イテレータが出てくる、あなたはメソッドのhasNextと、次を使用することができます達成するために非常に簡単です。
我々がコントロールしていないビジネスロジックは、ちょうどあなたが、新しいPropertyTokenizer例次のメソッドを呼び出すときに知っておく必要があり、この例では、子どもたちの財産を持っている、のhasNextの方法は、子どもたちが判断するために属性を経由かどうかの判定条件の反復の終わりとして空気。
かかわらず、特定の実装の、我々は2つのだけの事を理解する必要があります。1.次のニーズをやって、2のhasNextがどのように私が言うことができますか?