亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

迭代器模式和模板模式

發布時間:2020-07-18 00:00:10 來源:網絡 閱讀:478 作者:匯天下豪杰 欄目:編程語言

1、迭代器模式

  里面有一個對集合的引用;
  這個迭代器是對誰創建的,這個迭代器就持有誰(這個集合)的引用!

2、具體實現

  (1)、代碼如下

#include<iostream>
using namespace std;

#define SIZE    5

class MyIterator{ //抽象的迭代器
    public:
        virtual void First() = 0;
        virtual void Next() = 0;
        virtual bool isDone() = 0;
        virtual int CurrentItem() = 0;
    private:
};
 
class Abstract{  //抽象的集合類
    public:  
        virtual MyIterator *createIterator() = 0;
        virtual int getItem(int index) = 0;
        virtual int getSize() = 0;
    protected:
};

class ConIterator : public MyIterator{ // 具體的迭代器
    public:
        ConIterator(Abstract *ag){
            p = ag;
            currentIndex = 0;
        }
        virtual void First(){
            currentIndex = 0;   //讓當前游標回到位置0;
        }
        virtual void Next(){
            if(currentIndex < p->getSize())
            currentIndex++;
        }
        virtual bool isDone(){

            return currentIndex == p->getSize();
        }
        virtual int CurrentItem(){
            return p->getItem(currentIndex);
        }
    private:
        int currentIndex;
        Abstract *p;
};

class Jh : public Abstract{
    public:
        Jh(){    
            for(int i = 0; i < SIZE; i++){
                arr[i] = i+100;
            }
        }
        virtual MyIterator *createIterator(){
            return new ConIterator(this);   //讓迭代器持有一個集合的引用!!!
        }
        virtual int getItem(int index){
            return arr[index];
        }
        virtual int getSize(){
            return SIZE;
        }
    private:
        int arr[SIZE];
};


int main(void){
    Abstract *ag = new Jh;
    MyIterator *it = ag->createIterator();

    for(; !(it->isDone()); it->Next()){
        cout<<it->CurrentItem()<<" ";
    }
    cout<<endl;     
    delete ag;
    delete it;

    return 0;
}

  (2)、運行結果

迭代器模式和模板模式


3、模板模式

  提前將業務邏輯做好了,就是同一種模板;


4、具體實現

  (1)、代碼實現

#include<iostream>
using namespace std;

class MakeCar{
    public:
        virtual void MakeHead() = 0;
        virtual void MakeBody() = 0;
        virtual void MakeTail() = 0;
    public:
        void Make(){  //模版函數:提前將業務邏輯做好了;
            MakeTail();
            MakeBody();
            MakeHead();
        }
    private:
};

class Jeep : public MakeCar{
    public:
        virtual void MakeHead(){
            cout<<"Jeep head"<<endl;
        }   
        virtual void MakeBody(){
            cout<<"Jeep Body"<<endl;
        }   
        virtual void MakeTail(){
            cout<<"Jeep Tail"<<endl;
        }
    private:
};


class Bus : public MakeCar{
    public:
        virtual void MakeHead(){
            cout<<"Bus head"<<endl;
        }
        virtual void MakeBody(){
            cout<<"Bus Body"<<endl;
        }
        virtual void MakeTail(){
            cout<<"Bus Tail"<<endl;
        }
    private:
};
int main(void){
    MakeCar *car = new Bus;
    car->Make();
    delete car;

    MakeCar *car1 = new Jeep;
    car1->Make();
    delete car1;    

    return 0;
}

  (2)、運行結果

迭代器模式和模板模式


5、其余設計模式

  (1)、責任鏈模式:執行完一個任務以后,自動的執行下一個任務;

  (2)、觀察者模式:定義對象間多種的依賴關系,使的每一個對象改變狀態,則所有依賴的對象都會得到通知;一對多的關系!!!

  (3)、訪問者模式:將對象的數據和行為進行分離!!!
  主要作用于數據結構:將數據結構與數據結構上的具體操作進行分離!!!
  不同對象對同一個事務的不同操作!

  (4)解釋模式:根據用戶的輸入:程序自動解釋為不同的動作!!!

 




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

麻城市| 依安县| 桓台县| 新乡县| 隆子县| 永胜县| 博罗县| 万年县| 文登市| 永修县| 松桃| 吴川市| 德惠市| 共和县| 崇阳县| 大港区| 偃师市| 青海省| 宁波市| 商南县| 铁力市| 儋州市| 治多县| 新宾| 乌苏市| 民丰县| 黄大仙区| 元氏县| 辽阳县| 恭城| 中方县| 英德市| 江山市| 高碑店市| 黔西| 紫云| 灵山县| 锡林浩特市| 舟山市| 绵竹市| 秦皇岛市|