设计模式(十九)iterator(于C++过时)

使用场景:
1.对于集合对象,不暴露内部结构时,可以让外部客户透明的访问其中包含的元素
2.同时使得同一种算法能够在多种集合对象上进行操作
定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)
该对象的内部表示

3.c++的iterator基于模板。而不是该设计模式

iterator设计模式代码:

template<typename T>
class Iterator
{
public:
    virtual void first() = 0;
    virtual void next() = 0;
    virtual bool isDone() const = 0;
    virtual T& current() = 0;
};



template<typename T>
class MyCollection{
    
public:
    
    Iterator<T> GetIterator(){
        //...
    }
    
};

template<typename T>
class CollectionIterator : public Iterator<T>{
    MyCollection<T> mc;
public:
    
    CollectionIterator(const MyCollection<T> & c): mc(c){ }
    
    void first() override {
        
    }
    void next() override {
        
    }
    bool isDone() const override{
        
    }
    T& current() override{
        
    }
};

void MyAlgorithm()
{
    MyCollection<int> mc;
    
    Iterator<int> iter= mc.GetIterator();
    
    for (iter.first(); !iter.isDone(); iter.next()){
        cout << iter.current() << endl;
    }
    
}








猜你喜欢

转载自blog.csdn.net/wxf2012301351/article/details/74937333