其实很多东西手写或敲不出来,是不知道要干嘛。比如迭代模式是个啥,说出啥,估计很多人都写得出来。
迭代模式:不暴露里面的东西,循环遍历里面的东西出来。遍历这个操作,又不暴露,那就遍历这个操作搞成内部类了。作为这家伙的一个属性即可。这属性供外部用就行了。那遍历在内部类里面怎么设计你自己想了。jdk的就是hasnext和getnext,里面加个指针索引即可。搞定迭代遍历。
public interface IteratorY<E>{
boolean hashNext();
E getNext();
}
public interface ContainY{
IteratorY getIteratorY();
}
public class Target implements ContainY{
String[] yuan = {"a","b","c","d"};
public class MyIteratorY implements IteratorY<String>{
int point = -1;
@Override
public boolean hashNext() {
if(point == yuan.length){
return false;
}else{
point = point + 1;
return true;
}
}
@Override
public String getNext() {
if(point == yuan.length){
return "";
}else{
return yuan[point];
}
}
}
@Override
public IteratorY getIteratorY() {
return new MyIteratorY();
}
}
public static void main(String[] args) throws Exception {
test.IteratorY iteratory = new test().new Target().getIteratorY();
while(iteratory.hashNext()){
System.out.println(iteratory.getNext());
}
}