Java23种设计模式
模仿ArrayList实现功能,创建一个对象MyList,里面包含一个数组,对外只开放一个迭代器Iterator用来遍历,其他功能不开放。
- 创建Iterator对象,内部包含haseNext()、next() 方法
public interface Iterator {
boolean haseNext();
Object next();
}
- 首先创建一个接口接口Iterable,主要功能为MyList提供迭代器对象Iterator
public interface Iterable {
Iterator getIterator();
}
- 创建MyList类,里面包含一个有序的数组,并且实现Iterable对象。创建一个内部类MyIterator作为迭代器使用。
public class MyList implements Iterable{
private String[] list = {"11","22","33"};
private int cursor;
@Override
public Iterator getIterator() {
return new MyIterator();
}
class MyIterator implements Iterator{
@Override
public boolean haseNext() {
if(cursor>=list.length) return false;
return true;
}
@Override
public Object next() {
if(cursor>=list.length) return null;
String str = list[cursor];
cursor++;
return str;
}
}
}
打印结果:
11
22
33
- 这里我们的数组是仅MyList集合自己可知的,外部不可对其进行更改,遍历功能完全提取出来,符合单一职责原则。
- 对集合进行操作的时候我们只需要了解Iterator中的方法即可,无需考虑其他任何方法,符合迪米特法则。