NBA之迭代器模式

139 阅读1分钟

Design Pattern:

This pattern is used to get a way to access the elements of a collection object in sequential manner without any need to know its underlying representation 模式:迭代器模式是用来遍历集合中每个元素的 并且不用知道他底层的结构,反正他自带迭代器

故事场景:我想知道勇士队球员都有谁,我不用知道他的球员组成什么的,反正有球员名单

首先定义一个容器接口
  public interface Container {
  
      public Iterator getIterator();
      
  }
然后还有一个迭代器
  public interface Iterator {
  
      public boolean hasNext();
      public Object next();
      
  }
现在要定义一个类(勇士队),有一个迭代器(球员列表)
  public class Warriors implements Container {
  
      private List<String> names = Arrays.asList("凯文·杜兰特","克莱·汤普森","德雷蒙德·格林","斯蒂芬·库里","安德烈·伊格达拉","肖恩·利文斯顿");
  
      @Override
      public Iterator getIterator() {
          return new PeopleIterator();
      }
  
      private class PeopleIterator implements Iterator{
  
          int index;
  
          @Override
          public boolean hasNext() {
              return index < names.size();
          }
  
          @Override
          public Object next() {
              if (hasNext()){
                  return names.get(index++);
              }
              return names.get(index);
          }
      }
  }

实验的开始
    public class IteratorPatternDemo {
    
        public static void main(String[] args) {
            System.out.println("↓↓↓↓勇士队球员↓↓↓↓");
            Warriors family = new Warriors();
            for (Iterator iterator = family.getIterator();iterator.hasNext();){
                String name = iterator.next().toString();
                System.out.println("   "+name);
            }
        }
    }   
结果