zoukankan      html  css  js  c++  java
  • 设计模式之 迭代器模式

    class Book
    {
    public:
        Book(void);
        ~Book(void);
    public:
        string name_;
        string Tag_;
    };
    
    class BookList
    {
    public:
        BookList(void);
        ~BookList(void);
    public:
        void addBook(const Book *pBook){ bookList_.push_back(pBook); }
        void delBook(const Book *pBook){}
        IIterator* createIterator(void){ return new Iterator(this, bookList_.size()); }
        Book* operator[](int index){ return bookList_[index]; }
    
    public:
        vector<Book*> bookList_;
    };
    
    template<class ItemT, class ValueTypeT>
    class IIterator
    {
    public:
        virtual ~IIterator(void){}
        virtual void first(void) = 0;
        virtual void next(void) = 0;
        virtual ValueTypeT* currentItem(void) = 0;
        virtual bool isDone(void) = 0;
    };
    
    template <class ItemT, class ValueTypeT>
    class ListIterator: public IIterator<ItemT, ValueTypeT>
    {
    public:
        ListIterator(const ItemT *pItem, int size): pItem_(pItem),size_(size),cur_(0){}
        ~ListIterator(void){}
    public:
        virtual void first(void){ cur_ = 0; }
        virtual void next(void){ ++cur_; }
        virtual ValueTypeT* currentItem(void){ return cur_ < size_ ? pItem[cur_] : NULL; }
        virtual bool isDone(void){ return cur_ >= size_ ? true : false; }
    
    private:
        ItemT *pItem_;
        int size_;
        int cur_;
    };
  • 相关阅读:
    struts2 上传文件
    Struts2文件下载
    关于maven:调整你的maven的jdk版本为 xxxx
    倒计时显示
    [JSP] c:forEach 如何输出序号
    BaseServlet 继承 httpServlet
    验证码
    Javascript中Base64编码解码的使用实例
    五、javaScript基础&DOM(二)
    四、javaScript基础&DOM(一)
  • 原文地址:https://www.cnblogs.com/foreverstars/p/4690116.html
Copyright © 2011-2022 走看看