怎樣做醫(yī)院網(wǎng)站做電商一個月能掙多少錢
1.狀態(tài)模式
1.1定義
當一個對象的內(nèi)在狀態(tài)改變時允許根據(jù)當前狀態(tài)作出不同的行為;
1.2 適用場景
(1)一個對象的行為取決于它的狀態(tài),并且它必須在運行時根據(jù)狀態(tài)來決定其行為.
(2)代碼中包含了大量的與狀態(tài)有關(guān)的條件語句,例如:一個操作含有龐大的多分值語句(if-else或者switch-case), 且這些分支依賴于該對象的狀態(tài).
簡言之就是需要用到狀態(tài)機的地方都可以.
1.3 場景舉例
游樂場的抓娃娃機, 提供了搖桿,但是在投幣了和未投幣的情況下,給出的響應(yīng)是不一樣的,盡管動作是相同的.
1.4狀態(tài)模式的UML類圖
- Context, 調(diào)用主體,擁有和維護一個State實例;
- State, 定義了狀態(tài)接口,一系列行為的狀態(tài);
- ConcreteStateA, 具體狀態(tài)類,實現(xiàn)了State狀態(tài)接口,從而達到不同狀態(tài)下相同動作作出的不同行為.
2.策略模式
2.1定義
定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶.
2.2適用場景
- 針對同一類問題的多種處理方式,僅僅是具體行為的有差別時;
- 需要安全低封裝多種同一類型的操作時;
- 出現(xiàn)同一抽象類有多個子類,而有需要使用if-else或者switch-case來選擇具體的子類時.
2.3場景舉例
HAL的多家供應(yīng)商方案, 約定的HAL接口行為是統(tǒng)一規(guī)范的,后邊對應(yīng)的具體實現(xiàn)行為是有差異的.
2.4策略模式的UML類圖
說明:
- Context, 調(diào)用行為主體,可類比Android 系統(tǒng)服務(wù);
- Stragety, 策略的抽象, 類比為HAL接口;
- ConcretaStragetyA, 策略實例,有策略的方法的具體實現(xiàn),可類比供應(yīng)商的vendor實現(xiàn)方案.
3.相似異同點
二者在UML圖中看起來有點相似,
狀態(tài)模式下, Context調(diào)用主體記錄的State是可以根據(jù)當前行為在ConcretaStateA和ConcreteStateB之間來回切換;
--- > 封裝基于狀態(tài)的行為,并將行為委托給當前狀態(tài)類.
而在策略模式下,Context調(diào)用主題使用的是一種算法方案封裝, 在運行期間只可持有特定的一種, 不可互相來回切換.
--- > 其重點在于可以互換的行為封裝.
二者都屬于行為型的設(shè)計模式.