狀態模式學習和思考

2021-08-09 19:00:38 字數 393 閱讀 3821

狀態模式:允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。

在很多情況下,

乙個物件的行為取決於乙個或多個動態變化的屬性,這樣的屬性叫做

狀態,這樣的物件叫做

有狀態的

(stateful

)物件,這樣的物件狀態是從事先定義好的一系列值中取出的。當乙個這樣的物件與外部事件產生互動時,其內部狀態就會改變,從而使得系統的行為也隨之發生變化。

2.理解:

比如 state是乙個抽象類或介面,表示狀態,類a有乙個

state的屬性state,還有乙個setsate()的方法,通過此方法可以實現將a中和狀態相關的物件全部修改掉。進而物件整體都會有變化。其實是和策略模式很類似,要說區別,可能就是狀態模式比策略模式影響的更徹底。

外觀模式學習和思考

1.概念 外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。2.理解 外觀模式主要解決系統內和系統外的通訊問題,一般是系統外需要訪問系統內的多個方法 介面 單項的居多,類似於系統內為系統外提供服務那樣。增加的facade類裡...

裝飾模式學習和思考

1.概念 裝飾模式 decorator 動態地給乙個物件新增一些額外的職責。就增加功能來說,裝飾模式比生成子類更加靈活。理解 如果我們需要給父類新增一些額外功能的話,自然想到繼承,隨意擴充套件,但是一旦擴充套件了就不能修改了,是一種靜態的擴充套件。如果恰恰我們需要很頻繁地擴充套件,而且每次擴充套件出...

模板方法模式學習和思考

1.概念 模板方法模式 template method 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。2.理解 1.例如,某行為是由一系列子行為按照一定的順序組成,當乙個父類的若干個子類都要執行此行為,但這些子類...