摘要:狀態(tài)模式一狀態(tài)模式定義允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為這個對象看起來像是改變了其類二具體實現(xiàn)創(chuàng)建抽象狀態(tài)接口創(chuàng)建容器創(chuàng)建具體狀態(tài)類調(diào)用輸出三優(yōu)缺點優(yōu)點封裝了轉(zhuǎn)換規(guī)則擴展性強,易于添加新的狀態(tài)對象或行為缺點狀態(tài)過多導(dǎo)致類膨脹四源碼
狀態(tài)模式
一. 狀態(tài)模式 1.1 定義允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為.這個對象看起來像是改變了其類.
二. 具體實現(xiàn) 2.1 創(chuàng)建抽象狀態(tài)接口public interface IState { void print(Context context); }2.2 創(chuàng)建容器
public class Context { private IState state; public Context(){ this.state = null; } public void setState(IState state){ this.state = state; System.out.println("setState : " + state.getClass().getSimpleName()); } public void print(){ state.print(this); } }2.3 創(chuàng)建具體狀態(tài)類
public class StateA implements IState { @Override public void print(Context context) { System.out.println("StateA print ..."); context.setState(new StateB()); } } public class StateB implements IState { @Override public void print(Context context) { System.out.println("StateB print ..."); context.setState(new StateA()); } }2.5 調(diào)用
public static void main(String[] args) { Context context = new Context(); context.setState(new StateA()); context.print(); context.print(); }2.6 輸出
setState : StateA StateA print ... setState : StateB StateB print ... setState : StateA三. 優(yōu)缺點 3.1 優(yōu)點
封裝了轉(zhuǎn)換規(guī)則.
擴展性強,易于添加新的狀態(tài)對象或行為.
3.2 缺點狀態(tài)過多導(dǎo)致類膨脹.
四. 源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69727.html
摘要:要注意這里的一個狀態(tài)行為因為這個詞是狀態(tài)模式中最重要的個概念。考慮到這點,聰明的在中推出了狀態(tài)機這個偽函數(shù),能夠幫助我們快速實現(xiàn)狀態(tài)化。這里就引入了狀態(tài)機這個概念,以及和他對應(yīng)的狀態(tài)表。 ?首先聲明一點,這個模式是我目前見過最好用(本人觀點),但是也是最難理解的一個(本人觀點)。 所以大家需要做好心理準(zhǔn)備,如果,對這個模式?jīng)]有特別強烈的需求,比如: 我有一個Button,我按次數(shù)點擊它...
摘要:狀態(tài)模式對于對象內(nèi)部的狀態(tài),允許其在不同的狀態(tài)下,擁有不同的行為,對狀態(tài)單獨封裝成類。通過什么來舉例子呢設(shè)計到多狀態(tài),不同狀態(tài)下各自具有不同行為的東西,而且理解起來相對容易的。下篇更新適配器模式 目錄 狀態(tài)模式 為什么使用狀態(tài)模式? 應(yīng)用實例 狀態(tài)模式 狀態(tài)模式,顧名思義,肯定是和狀態(tài)有關(guān),進(jìn)一步思考,我們在討論的是設(shè)計模式,設(shè)計模式中的重要原則對變化的進(jìn)行封裝,順著這個思路去想,...
摘要:前言當(dāng)代碼中出現(xiàn)多重語句或者語句時。代替多重分支這個情況的代替方式是可以為晴天時處理邏輯下雨時處理邏輯陰天時處理邏輯策略模式使用策略模式可以代替多重和語句,讓代碼維護(hù)變得更加簡單。狀態(tài)模式允許一個對象在其內(nèi)部狀態(tài)改變的時候改變其行為。 前言 當(dāng)代碼中出現(xiàn)多重if-else語句或者switch語句時。弊端之一:如果這樣的代碼出現(xiàn)在多處,那么一旦出現(xiàn)需求變更,就需要把所有地方的if-els...
摘要:什么是狀態(tài)模式狀態(tài)模式對象行為是基于狀態(tài)來改變的。原文地址設(shè)計模式手冊之狀態(tài)模式優(yōu)缺點優(yōu)點封裝了轉(zhuǎn)化規(guī)則,對于大量分支語句,可以考慮使用狀態(tài)類進(jìn)一步封裝。 1. 什么是狀態(tài)模式? 狀態(tài)模式:對象行為是基于狀態(tài)來改變的。 內(nèi)部的狀態(tài)轉(zhuǎn)化,導(dǎo)致了行為表現(xiàn)形式不同。所以,用戶在外面看起來,好像是修改了行為。 Webpack4系列教程(17篇) + 設(shè)計模式手冊(16篇):GitHub地址 博...
摘要:什么是狀態(tài)模式狀態(tài)模式對象行為是基于狀態(tài)來改變的。原文地址設(shè)計模式手冊之狀態(tài)模式優(yōu)缺點優(yōu)點封裝了轉(zhuǎn)化規(guī)則,對于大量分支語句,可以考慮使用狀態(tài)類進(jìn)一步封裝。 1. 什么是狀態(tài)模式? 狀態(tài)模式:對象行為是基于狀態(tài)來改變的。 內(nèi)部的狀態(tài)轉(zhuǎn)化,導(dǎo)致了行為表現(xiàn)形式不同。所以,用戶在外面看起來,好像是修改了行為。 Webpack4系列教程(17篇) + 設(shè)計模式手冊(16篇):GitHub地址 博...
閱讀 2180·2021-11-24 09:39
閱讀 2797·2021-07-29 13:49
閱讀 2327·2019-08-29 14:15
閱讀 2241·2019-08-29 12:40
閱讀 3320·2019-08-26 13:42
閱讀 640·2019-08-26 12:13
閱讀 2075·2019-08-26 11:41
閱讀 3354·2019-08-23 18:32