青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

emptysoul

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  25 Posts :: 0 Stories :: 23 Comments :: 0 Trackbacks

常用鏈接

留言簿(18)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

狀態模式(State)允許一個對象在其內部狀態改變的時候改變行為。結構圖為:


汽車有不同的檔速,當行車時,經常需要換檔,換檔是從低到高,換檔的過程就是狀態的改變過程。

實現代碼:
//Car.h
class State;
class Car  
{
public:
    Car(State
*);
    
virtual ~Car();

    
void SetState(State*);
    
void Pull();
private:
    State
* m_pState;
};

#include 
"stdafx.h"
#include 
"Car.h"
#include 
"State.h"
#include 
<iostream>

using namespace std;

Car::Car(State
* pState)
{
    m_pState 
= pState;
    cout 
<< *m_pState;
}

Car::
~Car()
{

}

void Car::SetState(State* pState)
{
    m_pState 
= pState;
    cout 
<< "掛新檔," << *m_pState;
}

void Car::Pull()
{
    m_pState
->ChangeState(this);
}

//State.h
#include <iostream>
#include 
"Car.h"

class State  
{
public:
    State(
char* pName);
    
virtual ~State();

    
virtual void ChangeState(Car*= 0;
    friend std::ostream
& operator<<(std::ostream& os, State& state);
private:
    
char* m_pName;
};

//State.cpp
#include "stdafx.h"
#include 
"State.h"

using namespace std;

State::State(
char* pName)
{
    m_pName 
= pName;
}

State::
~State()
{

}

ostream
& operator<<(ostream& os, State& state)
{
    
return os << "當前檔位:" << state.m_pName << endl;
}

//Off.h
#include "State.h"

class Off : public State
{
public:
    Off();
    
virtual ~Off();

    
void ChangeState(Car*);
};

//Off.cpp
#include "stdafx.h"
#include 
"Off.h"
#include 
"Low.h"

#include 
<iostream>

using namespace std;

Off::Off() : State(
"空檔")
{

}

Off::
~Off()
{

}

void Off::ChangeState(Car* pCar)
{
    pCar
->SetState(new Low);
}

//Low.h
#include "State.h"

class Low : public State
{
public:
    Low();
    
virtual ~Low();

    
void ChangeState(Car*);
};

//Low.cpp
#include "stdafx.h"
#include 
"Low.h"
#include 
"Medium.h"

Low::Low() : State(
"低檔")
{

}

Low::
~Low()
{

}

void Low::ChangeState(Car* pCar)
{
    pCar
->SetState(new Medium);
}

//Medium.h
#include "State.h"

class Medium : public State
{
public:
    Medium();
    
virtual ~Medium();

    
void ChangeState(Car*);
};

//Medium.cpp
#include "stdafx.h"
#include 
"Medium.h"
#include 
"High.h"

Medium::Medium() : State(
"中檔")
{

}

Medium::
~Medium()
{

}

void Medium::ChangeState(Car* pCar)
{
    pCar
->SetState(new High);
}

//High.h
#include "State.h"

class High : public State
{
public:
    High();
    
virtual ~High();

    
void ChangeState(Car*);
};

//High.cpp
#include "stdafx.h"
#include 
"High.h"
#include 
"Off.h"

High::High() : State(
"高檔")
{

}

High::
~High()
{

}

void High::ChangeState(Car* pCar)
{
    pCar
->SetState(new Off);
}

//main.cpp
#include "stdafx.h"
#include 
"Car.h"
#include 
"Off.h"

int main(int argc, char* argv[])
{
    State
* pState = new Off;
    Car
* pCar = new Car(pState);
    pCar
->Pull();
    pCar
->Pull();
    pCar
->Pull();
    pCar
->Pull();

    
return 0;
}

最后輸出:
當前檔位:空檔
掛新檔,當前檔位:低檔
掛新檔,當前檔位:中檔
掛新檔,當前檔位:高檔
掛新檔,當前檔位:空檔
posted on 2009-02-17 21:28 emptysoul 閱讀(2752) 評論(4)  編輯 收藏 引用

Feedback

# re: 設計模式-狀態模式 2009-08-11 19:59 nelson
new了不delete??  回復  更多評論
  

# re: 設計模式-狀態模式 2011-03-03 09:32 zhenye1986
我也很想知道什么時候以及怎樣delete那些對象  回復  更多評論
  

# re: 設計模式-狀態模式 2011-04-22 15:19 路過人士
你這個代碼寫的真差勁  回復  更多評論
  

# re: 設計模式-狀態模式[未登錄] 2011-10-13 06:22 jk
這種程序亂誤導 人的  回復  更多評論
  


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美理论电影在线观看| 欧美日韩国产精品一区| 国产日韩一区二区三区在线| 亚洲免费在线看| 亚洲一区二区三区四区在线观看| 欧美视频四区| 亚洲淫片在线视频| 亚洲一区二区免费看| 国产精品一区视频| 欧美在线视频不卡| 欧美一区二区在线免费播放| 国产有码一区二区| 免费成人av资源网| 理论片一区二区在线| 亚洲美女av在线播放| 日韩午夜激情av| 国产视频亚洲精品| 欧美成人一品| 国产精品久久久久久久久久免费 | 久久久亚洲高清| 久久午夜电影网| 99www免费人成精品| 中文亚洲欧美| 玉米视频成人免费看| 亚洲精品日韩在线观看| 国产精品美女久久久久久免费| 久久久999成人| 欧美国产精品人人做人人爱| 亚洲欧美日本国产有色| 久久久午夜视频| 亚洲欧美国产精品专区久久| 久久精品国产99| 一区二区三区色| 久久久免费精品视频| 亚洲在线播放| 欧美黑人一区二区三区| 欧美综合国产| 欧美色综合网| 亚洲国产日韩欧美| 国产精品永久免费| 日韩视频中文| 亚洲娇小video精品| 午夜天堂精品久久久久| 99国产精品久久久久久久久久| 久久av在线| 午夜精品久久久久久久久久久| 免费欧美在线| 久久中文字幕一区| 国产精品久久久久久久久久免费| 欧美黄免费看| 伊人一区二区三区久久精品| 亚洲欧美久久久| 中日韩美女免费视频网址在线观看| 久久久久久久久久久久久9999| 亚洲综合电影一区二区三区| 欧美精品久久99| 欧美成人激情在线| 精品成人一区二区| 午夜日韩激情| 久久国产欧美| 国产久一道中文一区| 一区二区日韩免费看| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久精品国产69国产精品亚洲| 亚洲欧美激情一区二区| 欧美三级视频在线播放| 亚洲国产婷婷综合在线精品| 亚洲国产专区| 欧美成人精品| 亚洲国产欧美一区二区三区丁香婷| 亚洲大片av| 免费成人高清在线视频| 亚洲国产成人精品久久久国产成人一区 | 国产午夜精品久久久久久久| 亚洲欧美综合精品久久成人| 午夜欧美精品久久久久久久| 国产精品入口夜色视频大尺度 | 亚洲三级影院| 国产精品99久久久久久人| 欧美激情一区二区三区不卡| 亚洲国产一区在线| 一区二区三区四区精品| 欧美午夜精品久久久久免费视| 亚洲免费精品| 午夜精彩视频在线观看不卡 | 国内精品久久久久影院薰衣草| 久久国产加勒比精品无码| 免费观看成人| 亚洲精品一区二区网址| 欧美日韩在线观看一区二区| 亚洲一区亚洲| 另类欧美日韩国产在线| 亚洲日本黄色| 国产精品永久免费观看| 久久九九免费| 亚洲精品影视在线观看| 午夜久久一区| 亚洲国产一区在线| 欧美日韩视频专区在线播放 | 国产精品毛片| 久久久蜜桃精品| 日韩午夜在线视频| 久久国产直播| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 一本色道久久综合亚洲精品不卡| 欧美一区二区免费观在线| 在线观看一区| 国产精品久久久久免费a∨大胸 | 亚洲精品一区二| 久久国产精品99精品国产| 亚洲成色精品| 国产精品一二三视频| 欧美成人中文字幕在线| 亚洲综合第一| 亚洲区欧美区| 麻豆精品视频在线观看| 亚洲一区www| 91久久亚洲| 狠狠色综合色区| 国产精品一二三视频| 欧美精品在线观看91| 久久久久久电影| 性伦欧美刺激片在线观看| 亚洲美女视频| 亚洲国产综合91精品麻豆| 久久久久久久久久码影片| 亚洲制服av| 在线视频亚洲| 亚洲精品免费在线| 亚洲第一毛片| 亚洲第一黄网| 伊人成年综合电影网| 国产欧美日韩视频| 国产精品久久久久久久久久尿| 欧美另类专区| 欧美精品国产| 欧美精品色网| 欧美日韩a区| 欧美日本一道本| 欧美jizzhd精品欧美喷水 | 亚洲视频免费观看| 亚洲日本中文字幕免费在线不卡| 久久久国产成人精品| 欧美在线一二三四区| 午夜精品久久久久久久白皮肤| 亚洲小视频在线| 在线性视频日韩欧美| 一个人看的www久久| 日韩亚洲视频在线| 亚洲美女少妇无套啪啪呻吟| 亚洲三级电影在线观看| 亚洲三级色网| 在线视频你懂得一区二区三区| 99国产精品国产精品久久| 夜夜嗨av一区二区三区四季av| 日韩午夜免费| 亚洲小视频在线观看| 午夜一区二区三区在线观看| 欧美一区二区成人| 久久综合99re88久久爱| 欧美多人爱爱视频网站| 最新国产精品拍自在线播放| 亚洲精品一区二区三区不| 中文精品在线| 欧美制服丝袜| 牛牛国产精品| 国产精品久久久久久久久久久久 | 免费观看成人网| 美女网站久久| 免费观看久久久4p| 欧美日韩精品久久| 国产精品试看| 亚洲国产成人av好男人在线观看| 亚洲肉体裸体xxxx137| 在线视频亚洲一区| 久久国产手机看片| 欧美电影免费观看高清| 日韩亚洲国产欧美| 欧美在线观看天堂一区二区三区 | 宅男噜噜噜66国产日韩在线观看| 亚洲视频在线观看网站| 久久精品国产2020观看福利| 欧美裸体一区二区三区| 国产嫩草一区二区三区在线观看 | 亚洲一区二区三区中文字幕在线 | 日韩午夜一区| 欧美一区综合| 最近中文字幕日韩精品| 欧美一区二区三区在线播放| 免费在线视频一区| 国产欧美日韩不卡免费| 99视频有精品| 老司机亚洲精品| 这里只有精品视频| 蜜臀99久久精品久久久久久软件| 国产精品日韩在线播放| 亚洲精品小视频| 麻豆精品视频在线观看视频| 亚洲香蕉视频| 欧美日韩中文另类|