提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示

主要解决:不同的方式来遍历整个整合对象。
何时使用:遍历一个聚合对象。
如何解决:把在元素之间游走的责任交给迭代器,而不是聚合对象。
关键代码:定义接口:hasNext, next。

  1. class Container{
  2. constructor(list){
  3. this.list = list;
  4. }
  5. getIterator(){
  6. return new Iterator(this)
  7. }
  8. }
  9. class Iterator{
  10. constructor(container){
  11. this.list = container.list;
  12. this.index = 0;
  13. }
  14. hasNext(){
  15. return this.index < this.list.length
  16. }
  17. next(){
  18. if(this.hasNext()){
  19. return this.list[this.index++]
  20. }
  21. return null
  22. }
  23. }
  24. const container = new Container([1,2,3,4,5])
  25. const iterator = new Iterator(container);
  26. while(iterator.hasNext()){
  27. console.log(iterator.next())
  28. }

总结

  • 好用