“迭代器”设计模式

    技术2022-05-20  58

    1:设计一接口:

    package 编程思想内部类.v1.拥有外类所有元素访问权;

    public interface ISelector {

     boolean end(); Object current(); void next();}

    2:编写类实现迭代器设计模式:

    package 编程思想内部类.v1.拥有外类所有元素访问权;

    public class Sequence {

     private Object []items; private int next=0; public Sequence(int size) {  items=new Object[size]; } public void add(Object x){  if(next<items.length){   items[next++]=x;  } } private class SequenceSelector implements ISelector{  private int i=0;  @Override  public Object current() {   return items[i];  }

      @Override  public boolean end() {   return i==items.length;  }

      @Override  public void next() {   if(i<items.length)i++;  } } public ISelector getSelector(){  return new SequenceSelector(); } public static void main(String[] args) {  Sequence sequence = new Sequence(10);  for (int i = 0; i < 10; i++)   sequence.add(Integer.toString(i));    ISelector iSelector = sequence.getSelector();  while(!iSelector.end()){   System.out.print(iSelector.current()+"  ");   iSelector.next();  } } }说明:设计的接口来检查序列是否到末尾【end()】,访问当前对象【current()】,移动到序列的下一个对象【next()】.别的类可以按它们自己的方式来实现这个接口。

    、、、、、、、、、、、、内部类

    它也是一个内部类:

    内部类可以访问其外围类的方法和字段,就像它们自己拥有似的。

                   怎么做到的呢?

       当某个外围类对象的对象创建了一个内部类对象时,此内部类对象必定会秘密地捕获一个指向那个外围类对象引用。


    最新回复(0)