File tree Expand file tree Collapse file tree 7 files changed +94
-0
lines changed
src/com/anxpp/designpattern/abstractfactory/iterator Expand file tree Collapse file tree 7 files changed +94
-0
lines changed Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .abstractfactory .iterator ;
2+ //抽象产品
3+ public interface IIterator <T > {
4+ boolean hasNext ();
5+ Object next ();
6+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .abstractfactory .iterator ;
2+ import java .util .Collection ;
3+ import java .util .Map ;
4+ //抽象工厂
5+ public interface IIteratorFactory <T > {
6+ IIterator <T > iteratorMap (Map <T ,Object > m );
7+ IIterator <T > iteratorCollection (Collection <T > c );
8+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .abstractfactory .iterator ;
2+ import java .util .Collection ;
3+ import java .util .Iterator ;
4+ //具体产品,Collection迭代器(用到了代理模式)
5+ public class IteratorCollection <T > implements IIterator <T >{
6+ Iterator <T > iterator ;
7+ public IteratorCollection (Collection <T > c ){
8+ iterator = c .iterator ();
9+ }
10+ @ Override
11+ public boolean hasNext () {
12+ return iterator .hasNext ();
13+ }
14+ @ Override
15+ public T next () {
16+ return iterator .next ();
17+ }
18+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .abstractfactory .iterator ;
2+ import java .util .Collection ;
3+ import java .util .Map ;
4+ //具体工厂
5+ public class IteratorFactory <T > implements IIteratorFactory <T >{
6+ @ Override
7+ public IteratorMap <T > iteratorMap (Map <T ,Object > m ) {
8+ return new IteratorMap <T >(m );
9+ }
10+ @ Override
11+ public IteratorCollection <T > iteratorCollection (Collection <T > c ) {
12+ return new IteratorCollection <T >(c );
13+ }
14+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .abstractfactory .iterator ;
2+ import java .util .Iterator ;
3+ import java .util .Map ;
4+ //具体产品,Map迭代器(用到了代理模式)
5+ public class IteratorMap <T > implements IIterator <T >{
6+ Iterator <Map .Entry <T , Object >> iterator ;
7+ public IteratorMap (Map <T ,Object > m ){
8+ iterator = m .entrySet ().iterator ();
9+ }
10+ @ Override
11+ public boolean hasNext () {
12+ return iterator .hasNext ();
13+ }
14+ @ Override
15+ public Object next () {
16+ return iterator .next ().getValue ();
17+ }
18+ }
Original file line number Diff line number Diff line change 1+ package com .anxpp .designpattern .abstractfactory .iterator ;
2+
3+ import java .util .ArrayList ;
4+ import java .util .Collection ;
5+ import java .util .LinkedHashMap ;
6+ import java .util .Map ;
7+ //测试使用
8+ public class TestUse {
9+ public static void main (String args []){
10+ IIteratorFactory <Integer > factory = new IteratorFactory <>();
11+ Collection <Integer > collection = new ArrayList <Integer >();
12+ Map <Integer , Object > map = new LinkedHashMap <>();
13+ for (int i =0 ;i <10 ;i ++){
14+ collection .add (i );
15+ map .put (i , i );
16+ }
17+ IIterator <Integer > iteratorCollection = factory .iteratorCollection (collection );
18+ IIterator <Integer > iteratorMap = factory .iteratorMap (map );
19+ while (iteratorCollection .hasNext ())
20+ System .out .print (iteratorCollection .next ());
21+ System .out .println ();
22+ while (iteratorMap .hasNext ())
23+ System .out .print (iteratorMap .next ());
24+ }
25+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * @author http://anxpp.com
3+ * 抽象工厂模式实现Collection和Map的迭代器
4+ */
5+ package com .anxpp .designpattern .abstractfactory .iterator ;
You can’t perform that action at this time.
0 commit comments