迭代器模式:提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
场景还原(餐馆合并):
煎饼屋和午餐店合并后需要定制一份新的餐单,但由于煎饼屋的原菜单是用链表实现,而午餐点原菜单是用数组实现(他们的定义如下所示),所以打印新餐单的时候需要分别循环遍历原餐单中的菜单项。
如果还有第三家餐厅加入,我们还需要第三个循环,意味着要写很多重复代码。解决方法利用迭代器模式。
UML类图阐述:
模式结构:
- Iterator:定义迭代器访问和遍历元素的接口;
- ConcreteIterator:实现具体的迭代器;
- Aggregate:定义的容器,创建相应迭代器对象的接口;
- ConcreteAggregate:具体的容器实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例。
更多C++示例代码,请移步到本人的github。
设计模式,祝愿你把代码写成艺术。
6/26/2017 11:12:06 AM