英国室内设计公司排名介绍,seo上词价格,免费网站入口2022伊园,湛江网站设计模板视频文章目录 一、迭代器模式二、例子2.1 菜鸟例子2.1.1 定义迭代器接口2.1.2 定义迭代对象接口——用于返回一个迭代器2.1.3 实现 迭代对象 和 迭代器2.1.4 使用 2.2 JDK源码——ArrayList2.3 Spring源码——DefaultListableBeanFactory 三、其他设计模式 一、迭代器模式
类型 行为型模式 目的 用于顺序访问集合对象的元素使用者不需要知道集合对象的底层表示。
二、例子
2.1 菜鸟例子
2.1.1 定义迭代器接口
public interface Iterator {public boolean hasNext();public Object next();
}2.1.2 定义迭代对象接口——用于返回一个迭代器
public interface Container {public Iterator getIterator();
}2.1.3 实现 迭代对象 和 迭代器
public class NameRepository implements Container {public String[] names {Robert , John ,Julie , Lora};Overridepublic Iterator getIterator() {return new NameIterator();}private class NameIterator implements Iterator {int index;Overridepublic boolean hasNext() {if(index names.length){return true;}return false;}Overridepublic Object next() {if(this.hasNext()){return names[index];}return null;} }
}2.1.4 使用
public class IteratorPatternDemo {public static void main(String[] args) {NameRepository namesRepository new NameRepository();for(Iterator iter namesRepository.getIterator(); iter.hasNext();){String name (String)iter.next();System.out.println(Name : name);} }
}2.2 JDK源码——ArrayList
private static class ArrayListE extends AbstractListE implements RandomAccess, java.io.Serializable {Overridepublic IteratorE iterator() {return new ArrayItr(a);}
}
private static class ArrayItrE implements IteratorE {private int cursor;private final E[] a;ArrayItr(E[] a) {this.a a;}Overridepublic boolean hasNext() {return cursor a.length;}Overridepublic E next() {int i cursor;if (i a.length) {throw new NoSuchElementException();}cursor i 1;return a[i];}
}2.3 Spring源码——DefaultListableBeanFactory
public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory implements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable {private volatile ListString beanDefinitionNames;private volatile SetString manualSingletonNames;public IteratorString getBeanNamesIterator() {CompositeIteratorString iterator new CompositeIterator();iterator.add(this.beanDefinitionNames.iterator());iterator.add(this.manualSingletonNames.iterator());return iterator;}
}
迭代器CompositeIterator
public class CompositeIteratorE implements IteratorE {private final SetIteratorE iterators new LinkedHashSet();private boolean inUse false;public CompositeIterator() {}public void add(IteratorE iterator) {Assert.state(!this.inUse, You can no longer add iterators to a composite iterator thats already in use);if (this.iterators.contains(iterator)) {throw new IllegalArgumentException(You cannot add the same iterator twice);} else {this.iterators.add(iterator);}}public boolean hasNext() {this.inUse true;Iterator var1 this.iterators.iterator();Iterator iterator;do {if (!var1.hasNext()) {return false;}iterator (Iterator)var1.next();} while(!iterator.hasNext());return true;}public E next() {this.inUse true;Iterator var1 this.iterators.iterator();Iterator iterator;do {if (!var1.hasNext()) {throw new NoSuchElementException(All iterators exhausted);}iterator (Iterator)var1.next();} while(!iterator.hasNext());return iterator.next();}public void remove() {throw new UnsupportedOperationException(CompositeIterator does not support remove());}
} 三、其他设计模式
创建型模式 结构型模式
1、设计模式——装饰器模式Decorator Pattern Spring相关源码
行为型模式
1、设计模式——访问者模式Visitor Pattern Spring相关源码2、设计模式——中介者模式Mediator Pattern JDK相关源码3、设计模式——策略模式Strategy Pattern Spring相关源码4、设计模式——状态模式State Pattern5、设计模式——观察者模式Observer Pattern Spring相关源码6、设计模式——备忘录模式Memento Pattern7、设计模式——模板方法模式Template Pattern Spring相关源码