//狀態模式
//首先作者舉例是電梯的公升降和操作(上公升狀態的關門、開門、運動等動作判斷;下降狀態的動作判斷)
//我第一次想到的是:用四個列舉來表示當前電梯狀態,然後動作函式的執行用switch(狀態) case(執行)來寫。
//來看作者的寫法吧
class context;//後面的上下文類
class openningstate;//開門類
class closingstate;//關門類
class runningstate;//執行狀態類
class stoppingstate;//停止類
//抽象電梯類
class liftstate
virtual void open(){}//電梯開啟
virtual void close(){}//電梯關閉
virtual void run(){}//電梯執行
virtual void stop(){}//電梯停
};class context
void setliftstate(liftstate* _liftstate)
void open()
void close()
void run()
void stop()
};//開門狀態(只能做關門和開門操作)
class openningstate : public liftstate
void open()
void run()
void stop()
};//關門狀態(只能關門、開門、執行、停止)
class closingstate : public liftstate
void open()
void run()
};//執行狀態
class runningstate: public liftstate
void open()
void run()
};//停止狀態
class stoppingstate: public liftstate
void open()
void run()
void stop()
};class client
};//為了簡便,省略了些**,所以是無法執行的,主要是思想。
//作者基本是角色和環境構成
//環境操作角色,角色設定環境
//作者**亮點在」相互包含,相互設定「,結構好了,但耦合性高了
設計模式學習筆記(二十三) 狀態模式
2 典型實現 3 例項 4 共享狀態 5 環境類實現狀態切換 6 主要優點 7 主要缺點 8 適用場景 9 總結 狀態模式用於解決系統中複雜物件的狀態轉換以及不同狀態下行為的封裝問題。當系統中的某個物件存在多個狀態,這些狀態之間可以進行轉換,而且物件在不同狀態下行為不相同時可以使用狀態模式。狀態模式...
設計模式 之二十三種設計模式 工廠方法模式
define an inte ce for creating an object,but let subclasses decide which class to instantiate.factory method lets a class defer instantiation to subcl...
二十三種設計模式 羅列
1 工廠方法模式 factory method 2 抽象工廠模式 abstract factory 3 單例模式 singleton 4 建造者模式 builder 5 原型模式 prototype 6 介面卡模式 adapter 7 裝飾模式 decorator 8 模式 proxy 9 外觀模式...